Python实现发送邮件及带附件邮件的完整指南
本文详细介绍如何使用Python的smtplib和email库发送普通文本邮件及带附件邮件。重点说明163邮箱需使用客户端授权码而非登录密码,并提供完整的代码示例,涵盖服务器配置、邮件内容构建及附件添加步骤,帮助开发者快速实现邮件发送功能。
Python发送邮件前置准备
本教程以163邮箱作为测试环境进行演示。
需要注意的是,目前163邮箱已不再支持直接使用邮箱登录密码进行发送操作,必须获取并使用客户端授权码才能成功连接服务器。
发送纯文本邮件实现
接下来介绍如何使用Python发送纯文本格式的邮件。
import smtplib
# 发送字符串的邮件
from email.mime.text import MIMEText
# 设置服务器所需信息
fromEmailAddr = '发件人邮箱地址' # 邮件发送方邮箱地址
password = 'email password' # 密码(部分邮箱为授权码)
toEmailAddrs = ['接收方地址'] # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
# 设置email信息
# ---------------------------发送字符串的邮件-----------------------------
# 邮件内容设置
message = MIMEText('hello,test Python send Email.', 'plain', 'utf-8')
# 邮件主题
message['Subject'] = 'python test email'
# 发送方信息
message['From'] = fromEmailAddr
# 接受方信息
message['To'] = toEmailAddrs[0]
# ---------------------------------------------------------------------
# 登录并发送邮件
try:
server = smtplib.SMTP('smtp.163.com') # 163邮箱服务器地址,端口默认为25
server.login(fromEmailAddr, password)
server.sendmail(fromEmailAddr, toEmailAddrs, message.as_string())
print('success')
server.quit()
except smtplib.SMTPException as e:
print("error:", e)
发送带附件邮件实现
随后讲解如何在邮件中添加附件并发送。
import smtplib
# 发送字符串的邮件
from email.mime.text import MIMEText
# 需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart
# 设置服务器所需信息
fromEmailAddr = '发件人邮箱地址' # 邮件发送方邮箱地址
password = 'email password' # 密码(部分邮箱为授权码)
toEmailAddrs = ['收件人地址'] # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
# 设置email信息
# ---------------------------发送带附件邮件-----------------------------
# 邮件内容设置
message = MIMEMultipart()
# 邮件主题
message['Subject'] = 'python test email'
# 发送方信息
message['From'] = fromEmailAddr
# 接受方信息
message['To'] = toEmailAddrs[0]
# 邮件正文内容
message.attach(MIMEText('hello,test Python send Email', 'plain', 'utf-8'))
# 构造附件
att1 = MIMEText(open('text.txt', 'rb').read(), 'base64', 'utf-8')
att1['Content-type'] = 'application/octet-stream'
att1['Content-Disposition'] = 'attachment; filename="test.zip"'
message.attach(att1)
# ---------------------------------------------------------------------
# 登录并发送邮件
try:
server = smtplib.SMTP('smtp.163.com') # 163邮箱服务器地址,端口默认为25
server.login(fromEmailAddr, password)
server.sendmail(fromEmailAddr, toEmailAddrs, message.as_string())
print('success')
server.quit()
except smtplib.SMTPException as e:
print("error:", e)
以上即为利用Python发送普通邮件及带附件邮件的完整流程。如需了解更多关于Python邮件发送的高级技巧或常见问题,请持续关注本站发布的其他相关技术文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









