Python3使用SMTP发送带附件邮件


Posted in Python onJune 16, 2020

一、设置开启SMTP服务并获取授权码

可以参考第一篇文章,这里不再赘述:【一】https://3water.com/article/142220.htm

二、使用Python3 发送带附件的邮件

0.使用的环境为:

Python 3.6.3 (64bit)
PyCharm 2017.3 (64bit)

1.注意事项:

在调用smtplib,发送简单邮件的时候使用smtplib.SMTP()方法使没有问题的。

但是如果是邮件存在附件的情况下,还使用smtplib.SMTP()方法,就可能会发送失败,报“远程主机拒接连接”的错误;

这是因为我们发送邮件时,调用第三方的邮件服务器(如网易163邮箱,QQ邮箱等),这些邮件服务器出于安全考虑,有时可能就会不允许使用简单的,未经加密的smtplib.SMTP()方法直接发送邮件,而必须使用安全的,经过加密传输的smtplib.SMTP_SSL()方法,才能发送成功。

2.MIME类型:

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

简单来说,就是我们发送邮件时,如果存在附件,不同类型的附件要使用对应的MIME类型的方式来发送

具体类型可以参考:MIME参考手册

2.实现代码:

import smtplib 
from email.header import Header 
from email.mime.text import MIMEText 
from email.mime.multipart import MIMEMultipart 
 
sender = 'XXXXX@163.com' 
receiver = 'XXXXX@qq.com' 
smtpserver = 'smtp.163.com' 
username = 'XXXXX' 
password = 'XXXXX' 
mail_title = '主题:这是带附件的邮件' 
 
# 创建一个带附件的实例 
message = MIMEMultipart() 
message['From'] = sender 
message['To'] = receiver 
message['Subject'] = Header(mail_title, 'utf-8') 
 
# 邮件正文内容 
message.attach(MIMEText('来来来,这是邮件的正文', 'plain', 'utf-8')) 
 
# 构造附件1(附件为TXT格式的文本) 
att1 = MIMEText(open('text1.txt', 'rb').read(), 'base64', 'utf-8') 
att1["Content-Type"] = 'application/octet-stream' 
att1["Content-Disposition"] = 'attachment; filename="text1.txt"' 
message.attach(att1) 
 
# 构造附件2(附件为JPG格式的图片) 
att2 = MIMEText(open('123.jpg', 'rb').read(), 'base64', 'utf-8') 
att2["Content-Type"] = 'application/octet-stream' 
att2["Content-Disposition"] = 'attachment; filename="123.jpg"' 
message.attach(att2) 
 
# 构造附件3(附件为HTML格式的网页) 
att3 = MIMEText(open('report_test.html', 'rb').read(), 'base64', 'utf-8') 
att3["Content-Type"] = 'application/octet-stream' 
att3["Content-Disposition"] = 'attachment; filename="report_test.html"' 
message.attach(att3) 
 
 
smtpObj = smtplib.SMTP_SSL() # 注意:如果遇到发送失败的情况(提示远程主机拒接连接),这里要使用SMTP_SSL方法 
smtpObj.connect(smtpserver) 
smtpObj.login(username, password) 
smtpObj.sendmail(sender, receiver, message.as_string()) 
print("邮件发送成功!!!") 
smtpObj.quit()

3.发送成功后,接收方收到的邮件如下图所示:

Python3使用SMTP发送带附件邮件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门篇之文件
Oct 20 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
Python中property函数用法实例分析
Jun 04 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 Python
基于Python绘制个人足迹地图
Jun 01 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
深入了解Python装饰器的高级用法
Aug 13 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
十个Python自动化常用操作,即拿即用
May 10 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 #Python
python3使用SMTP发送HTML格式邮件
Jun 19 #Python
python3.X 抓取火车票信息【修正版】
Jun 19 #Python
python3使用SMTP发送简单文本邮件
Jun 19 #Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 #Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 #Python
python爬虫实例详解
Jun 19 #Python
You might like
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
解析php中memcache的应用
2013/06/18 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
php自定义分页类完整实例
2015/12/25 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
js实现单一html页面两套css切换代码
2013/04/11 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
简述vue中的config配置
2018/01/23 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python用插值法绘制平滑曲线
2021/02/19 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
班主任班级寄语大全
2014/04/04 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python