Python群发邮件实例代码
2014-01-03 00:00
906 查看
直接上代码了
细心的读者会发现代码中有这样一句:msg['to']=','.join(strTo),但是msg[['to']并没有在后面被使用,这么写明显是不合理的,但是这就是stmplib的bug。你只有这样写才能群发邮件。查明原因如下:
The problem is that SMTP.sendmail and email.MIMEText need two different things.
email.MIMEText sets up the “To:” header for the body of the e-mail. It is ONLY used for displaying a result to the human being at the other end, and like all e-mail headers, must be a single string. (Note that it does not actually have to have anything to do with the people who actually receive the message.)
SMTP.sendmail, on the other hand, sets up the “envelope” of the message for the SMTP protocol. It needs a Python list of strings, each of which has a single address.
So, what you need to do is COMBINE the two replies you received. Set msg‘To' to a single string, but pass the raw list to sendmail.
好了今天就到这里。
import smtplib msg = MIMEMultipart() #构造附件1 att1 = MIMEText(open('/home/a2bgeek/develop/python/hello.py', 'rb').read(), 'base64', 'gb2312') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="hello.txt"'#这里的filename可以任意写,写什么名字,邮件中显示什么名字 msg.attach(att1) #构造附件2 #att2 = MIMEText(open('/home/a2bgeek/develop/python/mail.py', 'rb').read(), 'base64', 'gb2312') #att2["Content-Type"] = 'application/octet-stream' #att2["Content-Disposition"] = 'attachment; filename="123.txt"' #msg.attach(att2) #加邮件头 strTo = ['XXX1@139.com', 'XXX2@163.com', 'XXX3@126.com'] msg['to']=','.join(strTo) msg['from'] = 'YYY@163.com' msg['subject'] = '邮件主题' #发送邮件 try: server = smtplib.SMTP() server.connect('smtp.163.com') server.login('YYY@163.com','yourpasswd') server.sendmail(msg['from'], strTo ,msg.as_string()) server.quit() print '发送成功' except Exception, e: print str(e)
细心的读者会发现代码中有这样一句:msg['to']=','.join(strTo),但是msg[['to']并没有在后面被使用,这么写明显是不合理的,但是这就是stmplib的bug。你只有这样写才能群发邮件。查明原因如下:
The problem is that SMTP.sendmail and email.MIMEText need two different things.
email.MIMEText sets up the “To:” header for the body of the e-mail. It is ONLY used for displaying a result to the human being at the other end, and like all e-mail headers, must be a single string. (Note that it does not actually have to have anything to do with the people who actually receive the message.)
SMTP.sendmail, on the other hand, sets up the “envelope” of the message for the SMTP protocol. It needs a Python list of strings, each of which has a single address.
So, what you need to do is COMBINE the two replies you received. Set msg‘To' to a single string, but pass the raw list to sendmail.
好了今天就到这里。
相关文章推荐
- Python群发邮件实例代码
- python发送邮件的实例代码(支持html、图片、附件)
- python email smtplib模块发送邮件代码实例
- 详解python 发送邮件实例代码
- 邮件群发系统实例-代码解析 推荐
- python代码发送邮件实例
- python发送邮件的实例代码(支持html、图片、附件)
- 邮件群发系统实例-代码解析
- python发送邮件的实例代码(支持html、图片、附件)
- python 调用smtp服务器发送邮件实例
- python获取当前运行函数名称的方法实例代码
- 详解python实现读取邮件数据并下载附件的实例
- Python 遍历子文件和所有子文件夹的代码实例
- python 地图经纬度转换、纠偏的实例代码
- python+matplotlib绘制饼图散点图实例代码
- python 3.6 群发 附件 html格式 邮件
- python 通过 socket 发送文件的实例代码
- 以一段代码为实例快速入门Python2.7
- Python爬取当当、京东、亚马逊图书信息代码实例
- Python运算符重载详解及实例代码