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使用pycharm环境调用opencv库
Feb 11 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
python通过实例讲解反射机制
Oct 17 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Python3 读取Word文件方式
Feb 13 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
Python如何在bool函数中取值
Sep 21 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
python和opencv构建运动检测器的实现
Mar 03 Python
python 中[0]*2与0*2的区别说明
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中变量及部分适用方法
2008/03/27 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
初探nodeJS
2017/01/24 NodeJs
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
详解Vue 如何监听Array的变化
2019/06/06 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
flask入门之表单的实现
2018/07/18 Python
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
2014年会策划方案
2014/05/11 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
个人授权委托书范文
2014/09/21 职场文书
钳工实训报告总结
2014/11/04 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis