python发送中文邮件

来源:互联网 发布:windows系统加固 编辑:程序博客网 时间:2024/06/04 09:57

最近写了个小程序自动检测oa的更新信息,然后以邮件的形式发出通知。其中在配置发送邮件模块的时候,无论怎么配置邮件正文都无法显示中文。我的环境是win7 x64,python3.1.1。查找资料也只有一种方法,就是添加正文msg的时候指定字符集为gb2312,如下所示:

 

        msgText = MIMEText(plainText, 'plain','gb2312')

        msgHtml = MIMEText(htmlText, 'html','gb2312')

 

但是这样配置出现的一个错误就是,如果plainText,htmlText值中含有中文是会出现错误提示“TypeError: must be bytes or buffer, not str”。如果不指定gb2312,又会提示ascii编码不够用。

 

       看来问题主要是出在编码上,再试着先将plainText和htmlText编码为gb2312格式,这样果然好用。配置如下:

 

        msgText = MIMEText(plainText.encode('gb2312'), 'plain','gb2312')

        msgHtml = MIMEText(htmlText.encode('gb2312'), 'html','gb2312')

 

注:经验证,utf-8 也是可以成功的

总结:

 

1、邮件标题使用中文:

 

标题做如下处理:

subject=Header(subject, 'gb2312')

 

2、邮件正文使用中文:

普通文本和html文本作如下处理:

 

        msgText = MIMEText(plainText.encode('gb2312'), 'plain','gb2312')

        msgHtml = MIMEText(htmlText.encode('gb2312'), 'html','gb2312')

 

转载地址:http://blog.csdn.net/blems/article/details/5271406

原创粉丝点击