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备份文件的脚本
Aug 11 Python
布同自制Python函数帮助查询小工具
Mar 13 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
Nov 04 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
python 返回列表中某个值的索引方法
Nov 07 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
Django中create和save方法的不同
Aug 13 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
Python多进程编程常用方法解析
Mar 26 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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
实现树状结构的两种方法
2006/10/09 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
python 获取图片分辨率的方法
2019/01/08 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
全球度假村:Club Med
2017/11/27 全球购物
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
网络宣传方案
2014/03/15 职场文书
西岭雪山导游词
2015/02/06 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript
JavaScript流程控制(分支)
2021/12/06 Javascript