0

我需要发送非英文(中文、日文等)的邮件。我有一个 template.py 文件,我从中获取主题和正文。模板.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

4 回答 4

0

尝试将页面设置为 unicode

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

该字符集可识别多种语言及其各自的字符。

于 2012-08-29T13:28:39.460 回答
0

正如 Burhan 所问的,您是如何生成html_content邮件的以及您在哪个邮件客户端中检查邮件?正如大卫建议的那样,通常html_content应该是有效的 HTML 。<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <head>

另外,检查django.conf.settings.DEFAULT_CHARSET,如果不是'utf-8',您可以将其设置为'utf-8'msg.encoding = 'utf-8'在您的代码中设置 。(如果您想使用 charset 等gb18030,请替换'utf-8'为它)

另外,在 Python 2.X 代码中,最好始终将 unicode 用于包含非 ascii 字符的字符串,因此

subject = u'附录E: 配置参考'
body = u'附录E: 配置参考'

# instead of
subject = '附录E: 配置参考'
body = '附录E: 配置参考'
于 2012-08-29T14:37:34.200 回答
0

试试看

import sys
reload(sys)  # to enable 'setdefaultencoding' again  (optional)
sys.setdefaultencoding("UTF-8")

subject.encode("UTF-8")

于 2013-02-07T13:50:42.333 回答
0

或者试试这个:

from email import Charset
# Due to http://code.djangoproject.com/ticket/11212
Charset.add_charset('utf-8',Charset.SHORTEST,None,'utf-8')
于 2012-08-29T13:31:31.383 回答