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 Django框架实现自定义表单提交
Mar 25 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
Python的log日志功能及设置方法
Jul 11 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
Python程序慢的重要原因
Sep 04 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 02 Python
Pandas-DataFrame知识点汇总
Mar 16 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
我的论坛源代码(十)
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python sorted排序方法如何实现
2020/03/31 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
旅游网创业计划书
2014/01/31 职场文书
迟到检讨书5000字
2014/01/31 职场文书
干部现实表现材料
2014/02/13 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
表彰会主持词
2014/03/26 职场文书
出售房屋委托书范本
2014/09/24 职场文书
计划生育个人总结
2015/03/02 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫