python中的SMTP发送邮件
1|0一. 介绍
python3中自带了smtplib模块和email模块
smtplib模块:负责与邮件服务器的交互
email模块:负责组织邮件内容
2|0二. smtplib模块
smtplib模块:主要是通过SMTP类来与邮件系统进行交互
1. 实例化一个SMTP对象
s = smtplib.SMTP(邮件服务器地址, 端口号)
s = smtplib.SMTP_SSL(邮件服务器地址,端口号)
2. 登录邮箱--权限验证
s.login(用户名,授权码)
3. 发送邮件
s.sendmail(发件人邮箱,收件人邮箱,发送内容)
4. 断开连接
s.close()
5. 实例:我们来看一个小练习,即发送邮件程序 v1.0
这就是一个很简单的邮件发送程序,我们只利用了smtplib模块,可以看看效果
打开邮件之后,发现发件人也没有,收件人也没有,主题也没有,内容也没有。至于为什么内容也没有,我猜和没有使用email模块相关,因为这个模块就是负责邮件内容的。
3|0三. email模块
email模块:支持发送的邮件内容为纯文本、html内容、图片、添加附件
email模块有几大类用来针对不同的邮件内容形式,常用如下:
MIMEText:内容形式为纯文本,或者html页面
MIMEImage:内容形式为图片
MIMEMultipart:多形式组合。即内容包含文本和附件
每一类对应的导入方式:
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
3|11. MIMEText
MIMEText(msg, type, charset):
msg:文本内容
type:默认为plain,即纯文本,发送html格式的时候,修改为html,但同时要求msg的内容也是html格式
charset:文本编码,有中文时选择utf-8
#构造TEXT格式的消息
msg = MIMEText("hello, test!", charset = "utf-8")
msg["From"] = "XXXX"
msg["To"] = "XXXX"
msg["CC"] = "XXXX"
msg["Subject"] = "python发邮件测试"
#发送以上构造的邮件内容,要使用as_string来将构造的邮件内容转换成string形式
s.sendmail("XXXX", "XXXX" , msg.as_string())
3|22. 实例:发送邮件程序v2.0,添加主题、发件人、收件人
我们看看效果如何
实际上,比刚才的效果要好很多。因为我们明确的看到了有主题、发件人、收件人以及邮件内容等相关信息
3|33. 实例:发送邮件程序v3.0,发送html文件
此时,我们就可以把html文件的内容作为邮件内容发送出去,效果如下:
而html文件在浏览器中打开的效果是这样的
可以明显的感受到,邮件的内容就是html文件在浏览器中展示的内容
3|44. 实例:发送邮件程序v4.0,我们还可以传一个写一个html语言的文本发送过去
效果如下:
3|55. MIMEImage、MIMEMultipart
msg = MIMEMultipart()
msg_sub = MIMEText("hello.test!", _charset = "utf-8")
msg.attach(msg_sub) #将text消息添加到MIMEMultipart中,作为邮件正文
#图片作为附件
import os
img_data = open(os.getcwd() + "/reports/python33安装-添加path.png", "rb").read()
msg_img = MIMEImage(img_data)
msg_img.add_header("Content-Disposition", "attachment", filename = "python34.png")
msg_img.add_header("Content-ID", "<0>")
msg.attach(msg_img) #将图片消息添加到MIMEMultipart中,作为附件发送
3|66. 实例:发送邮件程序v5.0,将图片和html文件作为附件发送
这种效果就是我们最终想要的形式。
__EOF__

本文链接:https://www.cnblogs.com/my_captain/p/9070165.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?