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中一些自然语言工具的使用的入门教程
Apr 13 Python
python 日志增量抓取实现方法
Apr 28 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
PyQt实现计数器的方法示例
Jan 18 Python
十个Python自动化常用操作,即拿即用
May 10 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 分页类 扩展代码
2009/06/11 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
jQuery使用手册之 事件处理
2007/03/24 Javascript
如何用js控制css中的float的代码
2007/08/16 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript 继承实现方法
2009/08/26 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
pymysql的简单封装代码实例
2020/01/08 Python
在keras里实现自定义上采样层
2020/06/28 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
优质的学校老师推荐信
2013/10/28 职场文书
期末总结的个人自我评价
2013/11/02 职场文书
村创先争优活动总结
2014/08/28 职场文书
手术室护士个人总结
2015/02/13 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python