日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 发送邮件解决所有乱码问题

發布時間:2025/4/5 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 发送邮件解决所有乱码问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

使用python發郵件很簡單,但是遇到亂碼問題很煩惱。 亂碼問題有幾種:有發件人名稱亂碼,有標題亂碼,也有正文亂碼的問題。

要解決發件人名稱亂碼問題,必須使用Header,如下代碼:

from email.header import Header from = ("%s") % (Header('OutOfMemory.CN管理員','utf-8'),)

通過這樣設置發件人之后,發件人的顯示就不會有亂碼的現象了。

郵件主題亂碼問題

郵件主題亂碼有可能是在某些郵箱出現,例如我遇到發給Gmail不會亂碼,但是發給sina.cn的郵箱就會亂碼。

要解決郵件主題亂碼的問題需要保證subject必須是unicode,如下:

if not isinstance(subject,unicode):subject = unicode(subject) msg['Subject'] = subject

解決郵件正文亂碼問題

首先需要將MIMEText指定為utf-8編碼,然后還要設置msg['Accept-Language']和msg['Accept-Charset']兩個屬性,如下代碼片段:

? ?msg = MIMEText(body,format,'utf-8')msg["Accept-Language"]="zh-CN"msg["Accept-Charset"]="ISO-8859-1,utf-8"

解決了以上三個問題,郵件亂碼問題就不存在了,下面是完整的發郵件代碼:

import smtplib from email.mime.text import MIMEText from email.header import Header #下面一行要設置成你自己的郵件服務器的地址以及用戶名密碼發件人信息 host,user,password,fromMail = smtpInfo def sendMail(mailto,subject,body,format='plain'):if isinstance(body,unicode):body = str(body)me= ("%s<"+fromMail+">") % (Header(_mailFrom,'utf-8'),)msg = MIMEText(body,format,'utf-8')if not isinstance(subject,unicode):subject = unicode(subject)msg['Subject'] = subjectmsg['From'] = memsg['To'] = mailtomsg["Accept-Language"]="zh-CN"msg["Accept-Charset"]="ISO-8859-1,utf-8"try:s = smtplib.SMTP()s.connect(host)s.login(user,password)s.sendmail(me, mailto, msg.as_string())s.close()return Trueexcept Exception, e:print str(e)return False?

上面的程序測試過發送到Gmail,Sina,QQ,163以及HotMail,均沒有亂碼問題。

轉載于:https://my.oschina.net/donhui/blog/522520

總結

以上是生活随笔為你收集整理的python 发送邮件解决所有乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。