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自动重试HTTP连接装饰器
Apr 28 Python
Python实现简单的四则运算计算器
Nov 02 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
python中解析json格式文件的方法示例
May 03 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
使用python进行拆分大文件的方法
Dec 10 Python
python for循环remove同一个list过程解析
Aug 14 Python
python使用socket实现的传输demo示例【基于TCP协议】
Sep 24 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
cookies应对python反爬虫知识点详解
Nov 25 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
Angular实现form自动布局
2016/01/28 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
利用JS实现数字增长
2016/07/28 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
移动端效果之Swiper详解
2017/10/09 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
python实现自动化上线脚本的示例
2019/07/01 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python能开发游戏吗
2020/06/11 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
建筑项目策划书
2014/01/13 职场文书
给学校的建议书
2014/03/12 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
python实现股票历史数据可视化分析案例
2021/06/10 Python