2012-08-29 49 views
0

我需要發送非英文(中文,日文等)的郵件。 我有一個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() 

這對英文很好,但對其他語言不適用。 我該如何解決它?

+1

你是如何產生'html_content'? –

+0

是否有錯誤信息?我發現問題在於丟失了頭文件值的變形,這不像在unicode字符串上運行''.encode(「utf-8」)那麼簡單。 –

+0

http://stackoverflow.com/questions/15885062/unicodeencodeerror-with-attach-file-on-emailmessage-django-error?noredirect=1#comment22664718_15885062 – catherine

回答

0

嘗試將網頁轉換爲Unicode

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

的字符集識別多國語言和他們各自的角色。

+0

對不起,但我在哪裏添加它? – pythonhmmm

+0

電子郵件的頂部。 –

0

或者試試這個:

from email import Charset 
# Due to http://code.djangoproject.com/ticket/11212 
Charset.add_charset('utf-8',Charset.SHORTEST,None,'utf-8') 
0

由於布爾汗問,你怎麼產生html_content並在郵件客戶端你信了嗎?正如David所說,通常html_content應該是<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <head>的有效HTML。

此外,請檢查django.conf.settings.DEFAULT_CHARSET,如果它不是'utf-8',您可以將其設置爲'utf-8'或在代碼中設置msg.encoding = 'utf-8'。 (如果你想使用的字符集,如gb18030,更換'utf-8'它)

另外,在Python 2.X代碼,最好始終使用unicode含非ASCII字符的字符串,從而

subject = u'附錄E: 配置參考' 
body = u'附錄E: 配置參考' 

# instead of 
subject = '附錄E: 配置參考' 
body = '附錄E: 配置參考' 
0

嘗試這樣

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

subject.encode( 「UTF-8」)

相關問題