Python,发送主题中具有特殊字符的电子邮件

use*_*003 3 python email encoding

我正在从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() 
Run Code Online (Sandbox Code Playgroud)

mgi*_*nbr 5

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

subject = u"æøå"
Run Code Online (Sandbox Code Playgroud)

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

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