Python实现邮件发送完整流程与代码解析
本文详细解析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发送邮件的技术细节与实践方法,希望能为读者的学习与应用提供有益帮助。欢迎持续关注本站以获取更多技术支持与资源。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









