python SMTP实现发送带附件电子邮件
作者:alaska1131 发布时间:2023-09-29 11:31:54
标签:python,SMTP,邮件
本文实例为大家分享了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()
来源:http://www.cnblogs.com/alaska1131/articles/1852653.html


猜你喜欢
- question: Django中对数据库的调用非常的隐蔽,在各种复杂的模块互相拼接继承中很难发现获取数据库内容的部分来,开始试图理解一下下
- 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。一般而言:一段程序中
- 有一张错误上报表,下面只将与本文相关的字段罗列如下:上报人(ReportPerson)、上报错误ID(ErrorID)、上报时间(Repor
- 本文为大家分享了python3.5.1安装教程的具体步骤,供大家参考,具体内容如下首先,找到python下载的地址,如下图所示在这里我选择了
- Math.random()Math.random()是JavaScript默认提供的生成随机数的方法。该方法返回一个0到1之间的浮点数,其值
- 最近在做图片相关的工作,面对各种格式的图片转换,在OpenCV跟Pillow之间来回切换。觉得有必要把这些东西记录下来,以备不时之需。首先介
- 文章中有不正确的或者说辞不清的地方,麻烦大家指出了~~~与PHP字符串转义相关的配置和函数如下: 1.magic_quotes_runtim
- 前言:最近碰到业务需要根据PSD文件实现PSD文件解析图层功能,搜到了Python的一个解析PSD的库。这个库就是psd-tools,psd
- 另外,我们在 控制结构比较两个数值是否一直的时候,也应该尽量使用 === 来代替 ==(当然,这个也根据具体的业务逻辑选用比较合适的)。 小
- 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下。闲话不说,直奔主题。建议大家跟着敲一遍代码,体会
- 我突然很好奇,你说那些什么18几年的茅台真的是18几年就开始酿的吗?还有就是一个月要卖那么多,货是怎么供过来的?最后就是,一瓶那么贵,那一个
- 交叉表(cross-tabulation,简称crosstab)是⼀种⽤于计算分组频率的特殊透视表。语法详解:pd.crosstab(ind
- 最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开
- 1、引言小鱼:小 * 丝,走啊,出去撸串啊,小 * 丝:没时间啊,鱼哥小鱼:嗯??? 啥事情让你忙的撸串都不去了小 * 丝:我的BOSS让我写一个自动化
- 背景介绍Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况。因为这
- 代码:import tensorflow as tfsess = tf.Session()check_point_path = 'v
- 导语贪吃蛇,大家应该都玩过。当初第一次接触贪吃蛇的时候 ,还是我爸的数字手机,考试成绩比较好,就会得到一些小奖励,玩手机游戏肯定也在其中首位
- 安装环境:CentOS7 64位,MySQL5.71、配置YUM源在MySQL官网中下载YUM源rpm安装包:http://dev.mysq
- 1.问题如果我想获取一个目录下的所有文件列表,使用 Golang 该如何实现呢?比如有个目录 dir 结构如下:tree dirdir├──
- 前言本文将深入研究 preg_replace /e 模式下的代码执行问题,其中包括 preg_replace 函数的执行过程分析、正则表达式