当前位置:首页>python>Python 实现 QQ 邮箱发送带图片附件邮件

Python 实现 QQ 邮箱发送带图片附件邮件

  • 2026-10-09 15:32:15
Python 实现 QQ 邮箱发送带图片附件邮件

本文为 Python 学习过程中的实操记录,通过原生代码实现 QQ 邮箱发送包含图片附件的纯文本邮件功能,全程无代码修改,保留原始编写逻辑与注释,以下为完整实现内容及相关说明。

完整实现代码

实现逻辑

本代码基于 Python 内置模块实现,无第三方库依赖,整体执行流程遵循邮件发送标准逻辑,步骤清晰且可复现,具体分为 6 个核心环节:

模块导入:引入smtplib模块用于邮件发送底层实现,从email相关库中导入MIMEMultipart、Header、MIMEText、MIMEImage类,分别用于构建邮件主体、处理中文头部信息、创建纯文本正文、封装图片附件,为后续操作提供基础支持。

服务器连接:通过smtplib.SMTP_SSL建立与 QQ 邮箱 SMTP 服务器的加密连接,指定服务器地址为smtp.qq.com,端口为 465,该端口为 QQ 邮箱 SMTP_SSL 协议的固定端口。

身份验证:定义邮箱登录账号mailUser与授权码mailPass,调用login()方法完成服务器身份验证,验证通过后获得邮件发送权限。

邮件主体构建:创建MIMEMultipart对象作为邮件容器,依次配置Subject(邮件主题)、From(发件人)、To(收件人)头部信息,通过Header类处理中文内容,避免编码异常导致的乱码问题。

邮件内容封装:首先通过MIMEText创建纯文本正文,指定格式为plain、编码为utf-8;再以二进制只读模式(rb)读取本地图片文件,通过MIMEImage封装为附件,设置Content-Disposition头部信息标记为附件类型并指定展示文件名,最后将正文和附件依次附加到邮件主体中。

邮件发送与结果反馈:调用sendmail()方法,传入发件人、收件人及格式化后的邮件内容,完成邮件发送操作;发送成功后,控制台打印 "发送成功" 作为执行结果反馈。

关键技术要点

协议与服务器配置:QQ 邮箱采用 SMTP_SSL 加密协议进行邮件发送,服务器地址与端口为固定配置(smtp.qq.com:465),需严格匹配否则无法建立连接。

授权码机制:QQ 邮箱发送邮件需使用专属授权码,而非账户登录密码,授权码需在邮箱后台 "设置 - 账户" 中开启 SMTP 服务后获取,是完成身份验证的必要条件。

中文编码处理:邮件头部信息(主题、发件人、收件人)中的中文内容,必须通过Header类进行编码处理,正文内容通过MIMEText指定utf-8编码,确保全链路中文正常显示。

文件操作规范:读取图片附件时采用with open() as语句,自动管理文件句柄,避免资源泄漏;路径前添加r标识为原始字符串,防止路径中的反斜杠被识别为转义字符导致文件读取失败,文件读取模式固定为rb以适配二进制文件。

附件处理:图片附件通过MIMEImage类封装,其他类型文件可对应使用email.mime库下的MIMEApplication、MIMEDocument等类,核心需通过add_header设置附件标识与文件名。

邮件格式:采用MIMEMultipart作为邮件主体容器,支持多部分内容(正文 + 附件)的封装,是实现带附件邮件发送的基础格式,若仅发送纯文本邮件可直接使用MIMEText作为邮件主体。

代码复用与修改说明

本代码为可直接运行的完整实现,若需适配个人使用场景,仅需修改以下固定配置项,其余代码无需调整:

邮箱账号与授权码:将mailUser、sender修改为个人 QQ 邮箱账号,mailPass修改为对应的邮箱授权码。

收件人信息:将receiver修改为目标收件人邮箱账号,支持单个邮箱字符串格式。

邮件内容:根据需求修改message["Subject"](主题)、textContent(正文)内容,及附件filename(展示名称)。

附件路径:将filePath修改为本地待发送图片的绝对路径,确保文件实际存在且路径格式正确。

✦

 END 

✦

出品 | E+工作室 转载请注明来源
来源 | E+工作室
撰稿 | 李金龙
编辑 | 谷煜霜
校对 | 李世杰、杜骁
编审 | 古丽米热·图拉克

最新文章

随机文章