Python使用QQ邮箱发送HTML邮件完整教程
本文详解如何使用Python的smtplib和email模块通过QQ邮箱发送电子邮件。重点讲解开启SMTP服务、获取第三方授权码的安全配置步骤,并分别演示纯文本与HTML格式邮件的代码实现,涵盖端口配置及常见参数说明。
邮件发送核心流程
实现邮件发送功能主要包含以下三个核心步骤:
第一步,登录邮件服务器;
第二步,构造符合邮件协议规范要求的邮件内容;
第三步,执行发送操作。
Python标准库中,smtplib模块负责处理SMTP协议的通信封装,而email模块则用于构建符合RFC标准的邮件对象。两者结合即可实现邮件发送功能。
本文以QQ邮箱为例,演示如何配置并发送给自己或他人的邮件。
QQ邮箱配置与授权码获取
在编写代码之前,需完成以下准备工作:
登录QQ邮箱网页版,进入“设置”选项卡。

在左侧菜单中点击“账户”设置。

确保“POP3/SMTP服务”和“IMAP/SMTP服务”两项功能已开启,随后点击“生成授权码”以获取第三方登录凭证。
由于网页登录密码不适用于Python等第三方程序直接调用,QQ邮箱出于安全考虑,禁止使用常规密码进行第三方客户端登录。
因此,必须使用生成的第三方授权码代替密码进行身份验证。


以下是具体的Python实现代码:
纯文本邮件发送代码实现
import smtplib
from email.mime.text import MIMEText # 邮件正文
from email.header import Header # 邮件头
# 登录邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人的SMTP服务器,端口号25
smtp_obj.login("你的qq账号", 'admc********') # 括号中的内容分别是发件人邮箱账号、授权码
smtp_obj.set_debuglevel(1) # 显示调试信息,可以不用写
# 设置邮件头信息
msg = MIMEText("测试用Python发送email。", "plain", "utf-8") # 正文内容
msg['From'] = Header("小天天", 'utf-8') # 发件人名字
msg["To"] = Header("有缘人", "UTF-8") # 接收者名字
msg["Subject"] = Header('用Python发送邮件2022', 'utf-8') # 主题
# 发送
smtp_obj.sendmail('发送人邮箱', ['接收人邮箱'], msg.as_string())
#第一个是发送人邮箱;第二个是数组,说明可以给多个人发送;msg就是刚刚写的发送内容。
运行上述代码即可测试邮件发送功能。

注意事项:SMTP协议默认使用25端口,而SSL加密连接通常使用465端口(原文误写为456,此处按代码修正为465,但保留原文对SSL加密的描述)。SMTP明文传输存在安全风险,而SSL/TLS加密传输能保障通信安全。
若需发送HTML格式的邮件,可参考以下代码示例。
HTML格式邮件发送实现
import smtplib
from email.mime.text import MIMEText # 邮件正文
from email.header import Header # 邮件头
# 登录邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人的SMTP服务器,端口号25
smtp_obj.login("2308748900", 'admcwiwxxgmwdifh') # 括号中的内容分别是发件人邮箱账号、邮箱密码
smtp_obj.set_debuglevel(1) # 显示调试信息,可以不用写
# 设置邮件头信息
# HTML
msg_body='''
<h4>python发送html格式的邮件</h4>
<p>
测试用HTML格式发送邮件
</p>
'''
msg = MIMEText(msg_body, "html", "utf-8") # 将plain改成html
msg['From'] = Header("小天天", 'utf-8') # 发件人名字
msg["To"] = Header("有缘人", "UTF-8") # 接收者名字
msg["Subject"] = Header('用Python发送邮件2022', 'utf-8') # 主题
# 发送
smtp_obj.sendmail('2308748900@qq.com', ['2308748900@qq.com'], msg.as_string())主要逻辑与纯文本发送一致,区别在于将MIMEText的内容类型参数从“plain”修改为“html”,并将正文内容替换为HTML字符串。

至此,Python实现邮件发送功能的详细教程介绍完毕。如需了解更多Python邮件发送相关内容,建议查阅本站过往文章或继续浏览后续更新。感谢支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









