python SMTP实现发送带附件电子邮件


Posted in Python onMay 22, 2018

本文实例为大家分享了python SMTP发送带附件电子邮件的具体代码,供大家参考,具体内容如下

可采用email模块发送电子邮件附件。发送一个未知MIME类型的文件附件其基本思路如下:

1. 构造MIMEMultipart对象做为根容器
2. 构造MIMEText对象做为邮件显示内容并附加到根容器
3. 构造MIMEBase对象做为文件附件内容并附加到根容器

a. 读入文件内容并格式化

b. 设置附件头
4. 设置根容器属性
5. 得到格式化后的完整文本
6. 用smtp发送邮件

具体内容参见<programing python(3rd)> 14章第6节 “email: Parsing and Composing Mails”。发送一个未知MIME类型的文件附件实例代码如下:

import smtplib
import email.MIMEMultipart
import email.MIMEText
import email.MIMEBase
import os.path
 
From = "sender address"
To = "recipients"
file_name = "file name"
 
server = smtplib.SMTP("smtp server address")
server.login("username","password") #仅smtp服务器需要验证时
 
# 构造MIMEMultipart对象做为根容器
main_msg = email.MIMEMultipart.MIMEMultipart()
 
# 构造MIMEText对象做为邮件显示内容并附加到根容器
text_msg = email.MIMEText.MIMEText("this is a test text to text mime")
main_msg.attach(text_msg)
 
# 构造MIMEBase对象做为文件附件内容并附加到根容器
contype = 'application/octet-stream'
maintype, subtype = contype.split('/', 1)
 
## 读入文件内容并格式化
data = open(file_name, 'rb')
file_msg = email.MIMEBase.MIMEBase(maintype, subtype)
file_msg.set_payload(data.read( ))
data.close( )
email.Encoders.encode_base64(file_msg)
 
## 设置附件头
basename = os.path.basename(file_name)
file_msg.add_header('Content-Disposition',
 'attachment', filename = basename)
main_msg.attach(file_msg)
 
# 设置根容器属性
main_msg['From'] = From
main_msg['To'] = To
main_msg['Subject'] = "attach test "
main_msg['Date'] = email.Utils.formatdate( )
 
# 得到格式化后的完整文本
fullText = main_msg.as_string( )
 
# 用smtp发送邮件
try:
 server.sendmail(From, To, fullText)
finally:
 server.quit()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
python 列表删除所有指定元素的方法
Apr 19 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
python实现停车管理系统
Nov 30 Python
python实现文件的备份流程详解
Jun 18 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
pandas中ix的使用详细讲解
Mar 09 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
Python基础教程(一)——Windows搭建开发Python开发环境
Jul 20 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 Python
python 获取当天凌晨零点的时间戳方法
May 22 #Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 #Python
python3.x实现发送邮件功能
May 22 #Python
python 爬虫 批量获取代理ip的实例代码
May 22 #Python
python 获取当天每个准点时间戳的实例
May 22 #Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 #Python
python3实现163邮箱SMTP发送邮件
May 22 #Python
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
php实现网页端验证码功能
2017/07/11 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
python一键升级所有pip package的方法
2017/01/16 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
对python周期性定时器的示例详解
2019/02/19 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
软件项目开发计划书
2014/05/01 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
三行辞职书范文
2015/02/26 职场文书
学校中秋节活动总结
2015/03/23 职场文书
追讨欠款律师函
2015/06/24 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python