python 发邮件乱码
2015-09-29 17:06
477 查看
来自:http://outofmemory.cn/code-snippet/1464/python-send-youjian-resolve-suoyou-luanma-question
使用python发邮件很简单,但是遇到乱码问题很烦恼。 乱码问题有几种:有发件人名称乱码,有标题乱码,也有正文乱码的问题。
通过这样设置发件人之后,发件人的显示就不会有乱码的现象了。
要解决邮件主题乱码的问题需要保证subject必须是unicode,如下:
解决了以上三个问题,邮件乱码问题就不存在了,下面是完整的发邮件代码:
上面的程序测试过发送到Gmail,Sina,QQ,163以及HotMail,均没有乱码问题。
使用python发邮件很简单,但是遇到乱码问题很烦恼。 乱码问题有几种:有发件人名称乱码,有标题乱码,也有正文乱码的问题。
要解决发件人名称乱码问题,必须使用Header,如下代码:
from email.header import Header from = ("%s<outofmemory_cn@126.com>") % (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'] = subject
msg['From'] = me
msg['To'] = mailto
msg["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 True
except Exception, e:
print str(e)
return False
上面的程序测试过发送到Gmail,Sina,QQ,163以及HotMail,均没有乱码问题。
相关文章推荐
- Python 列表的清空
- python 数学前自动补0的方法
- python笔记集合
- python线程join的正解
- Python 迭代删除重复项,集合删除重复项
- python笔记-调用eval函数出现invalid syntax错误
- python list和tuple相互转化
- 关于Python学习之我见 不断更新
- python 使用全局变量 global
- Python-Open website
- Python中的对象赋值、浅拷贝与深拷贝
- Python Dict 词典的用法
- [转载]python encode和decode函数说明
- python 格式规范工具 autopep8 Tool to convert Python code to be PEP8 compliant
- [转载]Python2.7 urlparse学习
- python——string
- LeetCode----Ugly Number
- Python之下载安装以及第一个例子
- [转载]用python解析html--SGMLParser
- [转载]python模块学习---HTMLParser(解析HTML文档元素)