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 Nose框架编写测试用例方法
Oct 26 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
python小白学习包管理器pip安装
Jun 09 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
python之json文件转xml文件案例讲解
Aug 07 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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 三维饼图的实现代码
2008/09/28 PHP
一个比较简单的PHP 分页分组类
2009/12/10 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
JQuery插件开发示例代码
2013/11/06 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
python 控制语句
2011/11/03 Python
Python常用模块介绍
2014/11/21 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
类的核心特性有哪些
2014/01/01 面试题
外企C语言笔试题
2013/11/10 面试题
学生党员思想汇报
2013/12/28 职场文书
小学教师国培感言
2014/02/08 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
法学专业求职信
2014/07/15 职场文书
实习单位证明范例
2014/11/17 职场文书