我正在从Python(Django)发送电子邮件。电子邮件主机是' smtp.gmail.com'。当我使用localhost时,我可以在电子邮件主题中使用特殊字符。但是,现在我正在从服务器(webfaction)尝试,我得到一个错误" UnicodeDecodeError:' ascii'编解码器无法解码字节..."在电子邮件模板中,我使用十六进制代码,但它们不适用于主题(它们没有被翻译)。怎么办?
# coding=UTF-8
...
subject = "æøå"
c = {}
t_html = loader.get_template(template_html)
t_text = loader.get_template(template_txt)
e = EmailMultiAlternatives(subject, t_text.render(Context(c)), from_email, [to_email])
e.attach_alternative(t_html.render(Context(c)), "text/html")
e.send()
答案 0 :(得分:5)
如果您使用的是Python 2,我建议您使用u
添加字符串:
subject = u"æøå"
(我知道coding
“魔术评论”应该自动处理,但根据经验,我可以说它并不总是有效)
更新以供将来参考,确保生产环境支持开发时使用的相同编码也很重要。 UTF-8
(它在任何地方都受支持)应该没问题,但是如果要在Windows(Cp1252
)下编辑源文件然后在UNIX服务器中部署,那么Python解释器可能无法阅读它们,无论是否存在coding
。