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

时间:2012-12-27 08:11:42

标签: 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() 

1 个答案:

答案 0 :(得分:5)

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

subject = u"æøå"

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

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