Python实现邮件发送完整流程与代码解析

Nora
Nora
发布时间:2026-10-12| 2人浏览过
原创

本文详细解析Python发送邮件的实现流程,涵盖邮件构建与发送两大核心步骤。通过具体代码示例展示如何配置SMTP服务器、处理正文及附件,并强调开启SMTP服务的重要性。适合希望掌握Python网络通信功能的开发者参考。

为深入理解邮件发送功能的实现机制,首先需要掌握邮件系统的基本运作流程。电子邮件的传输过程类似于传统邮政系统:邮件从发送方所在的邮件服务器(源站点)出发,经由网络传输至接收方的邮件服务器(目标站点),随后由接收方服务器进行处理并投递给最终用户。值得注意的是,每个邮件服务器通常同时承担发送与接收的双重角色,且不同服务器的地址、端口号及具体配置可能存在显著差异。

总体而言,发送邮件的操作可归纳为两个主要阶段:

第一阶段:邮件内容的编写与组装

在此阶段,需完成以下准备工作: 1. 填写发件人与收件人的邮箱地址。 2. 设定邮件主题。 3. 撰写邮件正文,并视需要添加附件或嵌入图片。 4. 将上述元素整合为完整的邮件对象。

第二阶段:执行邮件发送操作

具体操作步骤如下: 1. 建立与发送邮件服务器的连接。 2. 使用账号和密码登录邮箱服务。 3. 执行邮件发送指令。 4. 发送完成后断开连接并退出登录。

以下是具体的Python代码实现部分:

# -*- coding:utf-8 -*-
import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

#创建邮件对象,相当于信纸
msg = MIMEMultipart()
#邮件发送方
msg['From'] = 'XXXXXXXX.qq.com'
#邮件接收方
msg['To'] = '1212112@qq.com'
#邮件主题
msg['Subject'] = Header('这是邮箱主题部分', charset='UTF-8')#中文主题

#文本内容
txt = '亲爱的用户'
part1 = MIMEText(txt, 'plain', 'utf-8')
#添加到邮件中
msg.attach(part1)

#超文本内容,放有图片,注意src路径,此为放在同一目录中
html = '<div><img src="cid:image1">亲爱的</div>'
#一定要设置邮件格式,否则可能会乱码,当时接手别人手中没加邮件格式的项目,坑了我半天
part2 = MIMEText(html, 'html', 'utf-8')
#添加到邮件中
msg.attach(part2)

#图片放到邮件中
# 指定图片为当前目录
fp = open('test.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
msg.attach(msgImage)

#加入附件
att2 = MIMEText('这是附件里的文字', 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
#设置附件名为runoob.txt
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
#附件放在邮件中
msg.attach(att2)

#非ssl方式的smtp(简单邮件发送协议),下面注释为ssl方式的smtp
smtp = smtplib.SMTP()
# smtp = smtplib.SMTP_SSL()

try:
 #连接主机地址
 smtp.connect('mail.yto.net.cn:25')
 #登录邮箱,需要邮箱账号,密码
 smtp.login('XXXXXXXX.qq.com','234123')
 #发送邮件,需要登录的邮箱号,发送方的邮箱号,发送内容
 smtp.sendmail('XXXXXXXX.qq.com', '1212112@qq.com', msg.as_string())
 #退出邮箱
 smtp.quit()
 print 'The mail is sended successly.'
except smtplib.SMTPException,e:
 print "Error: 无法发送邮件",e

执行上述代码后的发送结果反馈如下:

关键注意事项:当使用个人邮箱作为发件方时,务必登录邮箱网页版或客户端,在“邮件服务器设置”中明确开启SMTP服务权限,否则可能导致发送失败。

本文完整介绍了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 算法库。