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实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
python hook监听事件详解
Oct 25 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
python3 深浅copy对比详解
Aug 12 Python
Python 如何提高元组的可读性
Aug 26 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
Python插件机制实现详解
May 04 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
Python如何获取文件路径/目录
Sep 22 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 smarty模版引擎中的缓存应用
2009/12/11 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
python中from module import * 的一个坑
2014/07/20 Python
Python算法应用实战之队列详解
2017/02/04 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
用matplotlib画等高线图详解
2017/12/14 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
聊聊python中的循环遍历
2020/09/07 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
应聘教师自荐信
2013/10/12 职场文书
大学毕业生简单自荐信
2013/11/05 职场文书
客户经理岗位职责
2013/12/08 职场文书
工程部经理岗位职责
2013/12/08 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
工作个人的自我评价
2014/01/14 职场文书
学校教研活动总结
2014/07/02 职场文书
雾霾停课通知
2015/04/24 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书