用英语以外的语言发送邮件

时间:2012-08-29 13:24:33

标签: python django email utf-8 multilingual

我需要发送非英文邮件(中文,日文等)。 我有一个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()

它适用于英语,但不适用于其他语言。 我该如何解决?

4 个答案:

答案 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”)