3

我正在从 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() 
4

1 回答 1

5

如果您使用的是 Python 2,我建议您在字符串前面加上u

subject = u"æøå"

(我知道coding“魔术评论”应该自动处理,但根据经验我可以说它并不总是有效)

更新:为了将来参考,确保生产环境支持开发中使用的相同编码也很重要。它应该没问题UTF-8(它在所有地方都受支持),但是如果您要在 Windows ( Cp1252) 下编辑源文件,然后部署到 UNIX 服务器中,Python 解释器可能无法读取它们,无论coding.

于 2012-12-27T08:14:44.320 回答