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字符串替换实例分析
May 11 Python
详解Python中find()方法的使用
May 18 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
python数字图像处理之高级形态学处理
Apr 27 Python
Python实现修改IE注册表功能示例
May 10 Python
tensorflow 只恢复部分模型参数的实例
Jan 06 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
Django REST Framework 分页(Pagination)详解
Nov 30 Python
Pandas 稀疏数据结构的实现
Jul 25 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
保护环境的建议书
2014/03/12 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
导师对论文的学术评语
2015/01/04 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
Python合并pdf文件的工具
2021/07/01 Python