Python发送SMTP邮件指南
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,Python内置对SMTP的支持,可以发送纯文本文件,HTML邮件以及附带文件。
一、两个模块
Python使用SMTP发送邮件的两个模块:smtplib模块、email模块。
smtplib:负责发送邮件
email:负责构建邮件
二、SMTP端口
1)未加密端口,smtplib.SMTP接口,端口:25
2)使用SSL加密,smtplib.SMTP_SSL接口,端口:465
3)使用TLS加密,端口:587
三、四大步骤
1、构造邮件内容
2、连接邮件服务器
s = smtplib.SMTP("smtp.qq.com", 25)
3、登陆邮件服务器
s.login(msg_from, passwd)
msg_from:指发送者的邮箱
passwd:指发送者的密码,这个密码不是你的QQ登陆密码,而是你在QQ邮箱设置开启SMTP之后的一个授权码

4、发送邮件
s.sendmail(msg_from, msg_to, msg.as_string())
msg_from:发送方
msg_to:收件方
msg.as_string():要发送的消息
四、常用场景
1、纯文本邮件
import smtplib from email.mime.text import MIMEText from email.header import Header # 发送者 msg_from = "xxxxx@qq.com" # 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码 passwd = "xxxxx" # 接受者 msg_to = "xxxx@qq.com" # 邮件文本 content = 'Python 邮件发送测试...' # 邮件主题 subject = "test" # 生成一个MIMEText对象(还有一些其它参数) msg = MIMEText(content) # 放入邮件主题 msg['Subject'] = Header(subject, 'utf-8') # 放入发件人 msg['From'] = msg_from try: # 连接邮件服务器 s = smtplib.SMTP("smtp.qq.com", 25) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print('成功') except s.SMTPException as e: print(e) finally: s.quit()
2、发送html文本
import smtplib from email.mime.text import MIMEText from email.header import Header # 发送者 msg_from = "xxxx@qq.com" # 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码 passwd = "xxxx" # 接受者 msg_to = "xxxx@qq.com" # 邮件文本 content = """ <p>Python 邮件发送测试...</p> <p><a href="http://www.baidu.com">这是一个链接</a></p> """ # 邮件主题 subject = "test" # 生成一个MIMEText对象( msg = MIMEText(content, 'html', 'utf-8') # 放入邮件主题 msg['Subject'] = Header(subject, 'utf-8') # 放入发件人 msg['From'] = msg_from try: # 连接邮件服务器 s = smtplib.SMTP("smtp.qq.com", 25) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print('成功') except s.SMTPException as e: print(e) finally: s.quit()
3、发送附件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # 发送者 msg_from = "xxxx@qq.com" # 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码 passwd = "xxxx" # 接受者 msg_to = "xxxx@qq.com" # 邮件主题 subject = "test" # 生成一个MIMEMultipart对象( msg = message = MIMEMultipart() # 邮件文本 message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8')) # 放入邮件主题 msg['Subject'] = Header(subject, 'utf-8') # 放入发件人 msg['From'] = msg_from # 添加附件 att1 = MIMEText(open('./wordcloud_singer.py', 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="test.txt"' msg.attach(att1) try: # 连接邮件服务器 s = smtplib.SMTP("smtp.qq.com", 25) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print('成功') except s.SMTPException as e: print(e) finally: s.quit()
五、写在最后
李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。
作者:李先生
-------------------------------------------
个性签名:在平凡中坚持前行,总有一天会遇见不一样的自己!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!



微信公众号 微信打赏 支付宝打赏
posted on 2021-06-07 11:47 Captain_Li 阅读(415) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2018-06-07 Centos7更改yum源
2018-06-07 centos7使用snmp