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之再深点,更懂list
Sep 20 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
python编码最佳实践之总结
Feb 14 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
python 调用钉钉机器人的方法
Feb 20 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
Python continue语句实例用法
Feb 06 Python
tensorflow 实现数据类型转换
Feb 17 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
mysq GBKl乱码
2006/11/28 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
php 发送带附件邮件示例
2014/01/23 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
python3 pygame实现接小球游戏
2019/05/14 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
通信专业个人自我鉴定
2013/10/21 职场文书
新学期决心书
2014/03/11 职场文书
给校长的建议书
2014/03/12 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫