Python使用QQ邮箱发送HTML邮件完整教程

听雨眠
听雨眠
发布时间:2026-10-16| 4人浏览过
原创

本文详解如何使用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邮件发送相关内容,建议查阅本站过往文章或继续浏览后续更新。感谢支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。