python 发送邮件解决所有乱码问题,python乱码,使用python发邮件很
python 发送邮件解决所有乱码问题,python乱码,使用python发邮件很
使用python发邮件很简单,但是遇到乱码问题很烦恼。 乱码问题有几种:有发件人名称乱码,有标题乱码,也有正文乱码的问题。
要解决发件人名称乱码问题,必须使用Header,如下代码:
from email.header import Headerfrom = ("%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 smtplibfrom email.mime.text import MIMETextfrom email.header import Header#下面一行要设置成你自己的邮件服务器的地址以及用户名密码发件人信息host,user,password,fromMail = smtpInfodef 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使用Mutex保证程序只有一个实例运行,pythonmutex,有
- 把用汉字表示的数字转换为阿拉伯数字,汉字阿拉伯
- python 计算时间差,时间运算代码,python时间差,Q:如何方
- python获得汉字拼音的代码,python汉字拼音,#!/usr/bin/e
- 在Python中使用linux的命名管道,pythonlinux,在Python中使用
- 在python中使用json格式文件做配置文件,,json格式小巧玲
- twisted udp 实现示例,twistedudp,from twisted
- webpy更新程序时删除pyc文件的shell脚本,webpypyc,pyc文件是
- Python连接SqlServer代码示例,pythonsqlserver,Python编程语言简
- python 解析xml示例代码,pythonxml示例代码,python有三种方
评论关闭