我是靠谱客的博主 悲凉烧鹅,最近开发中收集的这篇文章主要介绍关于 python 发送 html 型 email 时,无法进行传参问题解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文出自: forever121.cn/,转载请注明出处

 

最近在写 html email时,遇到了个问题。

函数:from email.mime.text import MIMEText

MIMEText 语法结构: MIMEText(html_content, _subtype="html", _charset='gb2312')`

python 无法对 html_content 中的 %s 进行识别,无法将变量传入

报错 ValueError: unsupported format character '!' (0x21) at index

网上对于 html email 的 讲解较少,无法找到这个报错

在进一步排查中,我发现如果在html_content后不进行传参,也就是

MIMEText("""html....%s....content"""%value, _subtype="html", _charset='gb2312') 邮件发送的内容会直接是 %s

所以我怀疑 html_content 因代码量很大导致%s无法识别到)

之后我对 html_content 的内容进行的拆分,把 html_content 中 有 %s和无%s 赋值给变量

如:

    header = """
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!--[if IE]><html xmlns="http://www.w3.org/1999/xhtml" class="ie"><![endif]--><!--[if !IE]><!--><html style="margin: 0;padding: 0;" xmlns="http://www.w3.org/1999/xhtml"><!--<![endif]--><head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
"""
   title = """ <title> %s </title>""" %value

然后将所有的变量加在一起

html = header + title

直接传入 MIMEText(html_content=html, _subtype="html", _charset='gb2312'

就可以了

最后

以上就是悲凉烧鹅为你收集整理的关于 python 发送 html 型 email 时,无法进行传参问题解决方法的全部内容,希望文章能够帮你解决关于 python 发送 html 型 email 时,无法进行传参问题解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部