python邮件发送(带附件,解决中文乱码问题)
2011-08-03 16:53
766 查看
#-*- encoding: utf-8 -*- #导入smtplib和MIMEText import smtplib from email.Header import Header from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart import os.path def mailtest(from_addr,to_addr,subject,content,attfile): #创建一个带附件的实例 msg = MIMEMultipart() #添加邮件内容 #注意,要指定邮件内容的编码为utf-8,否则中文会有乱码 text_msg = MIMEText(content,'plain','utf-8') msg.attach(text_msg) #构造附件 #注意:传入的参数attfile为unicode,否则带中文的目录或名称的文件读不出来 # basename 为文件名称,由于传入的参数attfile为unicode编码,此处的basename也为unicode编码 basename = os.path.basename(attfile) #注意:指定att的编码方式为gb2312 att = MIMEText(open(attfile, 'rb').read(), 'base64', 'gb2312') att["Content-Type"] = 'application/octet-stream' #注意:此处basename要转换为gb2312编码,否则中文会有乱码。 # 特别,此处的basename为unicode编码,所以可以用basename.encode('gb2312') # 如果basename为utf-8编码,要用basename.decode('utf-8').encode('gb2312') att["Content-Disposition"] = 'attachment; filename=%s' % basename.encode('gb2312') msg.attach(att) #加邮件头 msg['to'] = from_addr msg['from'] = to_addr #主题指定utf-8编码,否则中文会有乱码 msg['subject'] = Header(subject, 'utf-8') #发送邮件 server = smtplib.SMTP('smpt.xxxx.cn') server.sendmail(msg['from'], msg['to'],msg.as_string()) server.close if __name__ =="__main__": #注意:附件的路径字符串应为unicode编码 mailtest("from@xxx.cn", "to@xxx.cn", "主题", "内容", u"D:\\日志文件.txt")
最近用python写一个自动发邮件的脚本,单纯发送没有什么问题,中文乱码倒是折磨了我好长时间。最终解决的办法见下面的代码。最后测试时发现,在网页上打开邮件中文是正常显示,但是用foxmail收下来后,附件名称中的中文还是乱码。先这样了。。。。。
相关文章推荐
- android 原生 电子邮件 应用 发送邮件附带 中文名附件时 附件名称乱码问题解决
- python读取\t\n的文件转换成html表格发送邮件(解决中文乱码问题)
- Java 使用 Velocity 发送邮件中文内容乱码问题的解决办法
- 解决zabbix设置脚本发送邮件报警中文乱码问题
- 使用Formail发送html格式的中文主题邮件,解决乱码问题等
- 基于python发送邮件的乱码问题的解决办法
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- 解决Django发送中文邮件时的编码及乱码问题
- PHP 发送UTF-8编码中文邮件标题乱码问题解决
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- python 接收邮件(下载附件,解决中文乱码)自测OK
- 解决zabbix邮件内容为附件和zabbix图中出现中文乱码问题
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- openerp 7.0邮件接收中文附件乱码问题解决办法
- Python发送Http请求时,中文乱码问题的解决方法
- 基于python发送邮件的乱码问题的解决办法
- 【转】Kettle发送邮件步骤遇到附件名是中文名变成乱码的问题解决办法
- c/c++ curl smtp 发送邮件 foxmail 中文乱码问题解决
- java如何发送邮件以及使用Velocity模板解决模板文件中文乱码的问题