我需要发送非英文邮件(中文,日文等)。 我有一个template.py文件,我从哪里得到主题和正文。 template.py
#!/us/bin/python
# -*- coding: utf-8 -*-
subject = '附录E: 配置参考'
body = '附录E: 配置参考'
我从template.py文件中读取了正文和主题。
msg = EmailMultiAlternatives(subject, body, from, to)
msg.attach_alternative(html_content, "text/html")
msg.send()
它适用于英语,但不适用于其他语言。 我该如何解决?
答案 0 :(得分:0)
尝试将页面设置为unicode
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
charset识别多种语言及其各自的字符。
答案 1 :(得分:0)
或试试这个:
from email import Charset
# Due to http://code.djangoproject.com/ticket/11212
Charset.add_charset('utf-8',Charset.SHORTEST,None,'utf-8')
答案 2 :(得分:0)
正如Burhan所问,你如何生成html_content
并在邮件客户端检查邮件?通常情况下html_content
应为有效的HTML,其<meta http-equiv="content-type" content="text/html; charset=utf-8" />
中的<head>
与David建议的那样。
另外,请检查django.conf.settings.DEFAULT_CHARSET
,如果它不是'utf-8'
,您可以将其设置为'utf-8'
或在代码中设置msg.encoding = 'utf-8'
。 (如果您要使用gb18030
之类的字符集,请将'utf-8'
替换为<)
另外,在Python 2.X代码中,最好总是对包含非ascii字符的字符串使用unicode,因此
subject = u'附录E: 配置参考'
body = u'附录E: 配置参考'
# instead of
subject = '附录E: 配置参考'
body = '附录E: 配置参考'
答案 3 :(得分:0)
试试
import sys
reload(sys) # to enable 'setdefaultencoding' again (optional)
sys.setdefaultencoding("UTF-8")
subject.encode( “UTF-8”)