Python群发邮件实例代码


Posted in Python onJanuary 03, 2014

直接上代码了

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学习笔记之解析json的方法分析
Apr 21 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
python实现报表自动化详解
Nov 16 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Python算法中的时间复杂度问题
Nov 19 Python
python模拟实现斗地主发牌
Jan 07 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 Python
Python 中面向接口编程
May 20 Python
使用scrapy实现增量式爬取方式
Jun 21 Python
python切换hosts文件代码示例
Dec 31 #Python
使用Python进行稳定可靠的文件操作详解
Dec 31 #Python
python连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 #Python
python连接mysql数据库示例(做增删改操作)
Dec 31 #Python
Python抓取Discuz!用户名脚本代码
Dec 30 #Python
python之模拟鼠标键盘动作具体实现
Dec 30 #Python
python多线程http下载实现示例
Dec 30 #Python
You might like
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php实现微信公众号无限群发
2015/10/11 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
Smarty3配置及入门语法
2017/02/22 PHP
php实现头像上传预览功能
2017/04/27 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
Prototype Selector对象学习
2009/07/23 Javascript
jquery 插件开发备注
2010/08/27 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
Python fileinput模块使用介绍
2014/11/30 Python
浅谈MySQL中的触发器
2015/05/05 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
人事部岗位职责范本
2014/03/05 职场文书
工作鉴定评语
2014/05/04 职场文书
学校安全生产承诺书
2014/05/23 职场文书
竞聘自述材料
2014/08/25 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android