#coding=cp936 from email.MIMEText import MIMEText from email.Header import Header import smtplib msg=MIMEText('hello world! 中文邮件测试',_subtype='plain',_charset='gb2312') msg['subject']=Header('中文邮件名测试test!','gb2312') msg['from']='[email protected]' #邮件client的所显示的sender,可有也可以 msg['to']='[email protected]' #邮件client 所显示的收件人。显示什么可以自己定 fromaddr='[email protected]' toaddrs=['[email protected]','[email protected]'] server.smtp('smtp.mail.yahoo.com.cn') #通过yahoo的免费邮箱发送。 server.login('loginname','password') #yahoo smtp需要认证 server.sendmail(fromaddr,toaddrs,msg.as_string()) #邮件正文为html #只需对上面做一点改动 msg=MIMEText('hello world! 中文邮件测试',_subtype='plain',_charset='gb2312') 改为 txt='<html><body>hello world! 中文邮件测试</body></html>' msg=MIMEText(txt,_subtype='html',_charset='gb2312') #邮件带附件 #coding=cp936 from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from email.Header import Header import smtplib, base64, sys msg=MIMEMultipart() #支持附件 txt1=MIMEText('邮件正文',_subtype='plain',_charset='gb2312') txt1.replace_header('Content-Transfer-Encoding', 'quoted-printable') #否则邮件原文看不懂,但并不影响读信 msg.attach(txt1) txt2=base64.encodestring(open('中文附件名test.rar','rb').read() #附件base64编码 txt2=MIMEText(txt2) txt2.replace_header('Content-Type', 'application/octet-stream; name=”%s”' % Header('中文f附件名测试test.rar','gb2312')) txt2.add_header('Content-Disposition', 'attachment;filename=”%s”' %Header('中文附件名测试test.rar','gb2312') ) msg(attach.txt2) msg['subject']=Header('中文邮件名测试test!(含附件)','gb2312') msg['from']='[email protected]' msg['to']='[email protected]' fromaddr='[email protected]' toaddrs=['[email protected]','[email protected]'] server.smtp('smtp.mail.yahoo.com.cn') server.login('loginname','password') server.sendmail(fromaddr,toaddrs,msg.as_string()) MIMEText默认的编码是 us-ascii, 需要改成 utf-8 MIMEText('中文', _charset='UTF-8') 或者调用set_charset来修改 from email.MIMEText import MIMEText #msg = MIMEText('中文', _charset='UTF-8') msg = MIMEText('中文') msg.set_charset('UTF-8') print msg.as_string() 发送html邮件 MIMEText(html, 'html') 发送txt邮件 MIMEText(text, 'plain') 最后脚本如下: #!/usr/bin/env python # encoding: utf-8 import smtplib import os from email.MIMEText import MIMEText from email.Header import Header #huizong=os.system("cat /tmp/tongji_vb.log |sed '1d'|awk '{a+=$2;b+=$3;c+=$4;d+=$5;}END{print a,b,c,d}'") res=os.popen("cat /tmp/tongji_vb.log |sed '1d'|awk '{a+=$2;b+=$3;c+=$4;d+=$5;}END{print a,b,c,d}'") a = res.read() a = a.replace(" " ,"\t\t",1) a = a.replace(" " ,"\t\t\t",2) a = "总量 " + "\t\t" + a f = open("/tmp/tongji_vb.log") s = f.readline() filecon = s + "\n" + a + "\n" s = f.readline() while s: filecon += s + "\n" s = f.readline() print filecon #textfile='/tmp/tongji_vb.log' #fp = open(textfile, 'rb') msg = MIMEText(filecon,_subtype='plain',_charset='UTF-8') msg.set_charset('UTF-8') #fp.close() COMMASPACE = ', ' to=['[email protected]'] msg['subject']=Header('微博数据库每日信息统计','UTF-8') msg['From'] = '[email protected]' msg['To'] = COMMASPACE.join(to) s = smtplib.SMTP('localhost') s.sendmail('[email protected]',to, msg.as_string()) s.quit()