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 相关文章推荐
python3实现ftp服务功能(客户端)
Mar 24 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python实现扣除个人税后的工资计算器示例
Mar 26 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
python3下载抖音视频的完整代码
Jun 05 Python
Python logging设置和logger解析
Aug 28 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
python缺失值的解决方法总结
Jun 09 Python
python实现商品进销存管理系统
May 30 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 array_search() 函数使用
2010/04/13 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
简单的三步vuex入门
2018/05/20 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
介绍Python中的文档测试模块
2015/04/28 Python
Python实现的rsa加密算法详解
2018/01/24 Python
Python实现端口检测的方法
2018/07/24 Python
详解小白之KMP算法及python实现
2019/04/04 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
Python使用python-docx读写word文档
2019/08/26 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
《凡卡》教学反思
2014/04/09 职场文书
什么是就业协议书
2014/04/17 职场文书
六年级小学生评语
2014/12/26 职场文书
法定代表人资格证明书
2015/06/18 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
js Proxy的原理详解
2021/05/25 Javascript