Python smtplib发送邮件的11段标准代码


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
Python smtplib 发送邮件的 11 段标准代码
在 Python 中使用 smtplib 发送邮件是很多开发者常用的功能,尤其是在需要自动化发送邮件通知时。本文将分享 11 段标准代码,帮助你掌握如何高效地使用 Python smtplib 发送邮件。
🔔🔔🔔 【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
1. 配置 SMTP 服务器
要在 Python 中发送邮件,首先需要配置 SMTP 服务器。常见的 SMTP 服务器包括 Gmail、 figur八通、 outlook.com 等。
1.1 配置 SMTP 服务器的基本信息
import smtplib# 服务器信息smtp_server = 'smtp.example.com' # 你的 SMTP 服务器地址port = 587 # SMTP 单点(Single Point)协议,通常用于小型服务# 证书路径cert_path = 'path/to/your/certificate.pem' # 如果需要证书的话用自己的证书路径
1.2 创建.SMTP 操作
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
1.3 传递密钥(可选)
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
1.4 连接到 SMTP 服务器
server = smtplib.SMTP_SSL(smtp_server, port)server = smtplib.SMTP serversert = smtplib.SMTP(smtphost, port)
2. 发送邮件的基本流程
邮件发送的基本流程包括以下几个步骤:
- 登录到 SMTP 服务器。
- 选择电邮服务提供商。
- 发送邮件。
2.1 发送一封邮件的基本示例
from email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText# 创建 MIMEMultipart 对象msg = MIMEMultipart()msg.set主件名('邮件标题')msg.set主题('邮件主题')# 添加邮件 bodypart1 = MIMEText('邮件内容', 'plain')msg.append(part1)# 发送邮件server.sendmail(your_email, recipient_email, msg.as_string())
2.2 发送邮件的完整示例
from email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextimport smtplib# 邮件配置your_email = 'your_email@example.com' # 发件人邮箱recipient_email = 'recipient@example.com' # 接收者邮箱subject = '邮件标题'body = '邮件内容'# 创建 MIMEMultipart 对象msg = MIMEMultipart()msg['From'] = your_emailmsg['To'] = recipient_emailmsg['Subject'] = subjectmsg.attach(MIMEText(body, 'plain'))# 初始化 SMTP 客户端server = smtplib.SMTP('smtp.example.com', 587)server.startpoly() # 启用 SSL/TLS 协议# 连接到 SMTP 服务器server TLSserver.sendmail(your_email, recipient_email, msg.as_string())# 关闭 SMTP 客户端server.quit()
3. 常见的错误处理代码
在实际使用中,可能会遇到各种错误,比如连接不上 SMTP 服务器、邮件内容超出限制等。下面是一些常见的错误处理代码。
3.1 处理 SMTP 连接失败
try: server.sendmail(your_email, recipient_email, msg.as_string())except smtplib.SMTPException as e: print(f"发送邮件失败: {e}") # 重试连接 server = smtplib.SMTP(smtp_server, port) server.startpoly() server.sendmail(your_email, recipient_email, msg.as_string())
3.2 处理邮件内容超出限制
if len(body) > 20000: print("邮件内容超出了限制") returnmsg.attach(MIMEText(body, 'plain'))
4. 自动化邮件发送代码
有时候需要自动化发送邮件,比如每天早上发送一次提醒邮件。
4.1 读取日历数据并发送邮件
import datetimefrom calendar import day_abscis# 定义发送邮件的时间target_time = datetime.time(9, 30) # 每天早上 9 点 30 分# 获取当前时间的分钟数now = datetime.datetime.now()now_min = now.hour * 60 + now.minute# 如果当前时间的分钟数在 0 到 29 分钟之间,发送邮件if 0 <= now_min < 30: # 发送邮件的代码
4.2 使用 crontab 自动化发送邮件
crontab -l | grep python-script
5. 处理邮件附件
在发送邮件时,附件也是很重要的一部分。
5.1 读取附件并发送
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
0
5.2 处理 GIF 动画附件
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
1
6. 邮件性能优化代码
发送邮件时,性能优化也是需要注意的地方。
6.1 提高邮件发送效率
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
2
6.2 使用压缩后的邮件
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
0
7. 邮件列表管理代码
如果你需要发送邮件给多个列表,可以使用以下代码。
7.1 发送邮件给多个列表
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
4
7.2 批处理邮件发送
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
5
8. 邮件主题代码
邮件主题可以增加邮件的可见性。
8.1 生成邮件主题
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
6
8.2 多主题邮件发送
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
7
9. 邮件日志跟踪代码
在发送邮件时,可以记录邮件的发送日志。
9.1 使用 logbook 记录日志
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
8
9.2 使用 sendgrid 记录日志
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
9
10. 使用第三方邮件服务代码
如果你需要更复杂的邮件功能,可以使用第三方邮件服务。
10.1 使用 Twilio SendEmail
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
0
10.2 使用 Sendgrid
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
1
11. 扩展话题:高级功能
11.1 邮件优化
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
2
11.2 邮件批量发送
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
3
11.3 邮件内容生成
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
4
11.4 邮件签名
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
5
11.5 邮件附件管理
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
6
11.6 邮件主题随机生成
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
6
11.7 邮件列表批量发送
server = smtplib.SMTP(smtp_server, port)server.startpoly() # 启用 SSL/TLS 协议server.ehlo() # 登录到 SMTP 服务器server TLS
4
11.8 邮件性能监控
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
9
11.9 邮件附件压缩
server = smtplib.SMTP_SSL(smtp_server, port)server = smtplib.SMTP serversert = smtplib.SMTP(smtphost, port)
0
11.10 使用邮件签名
# 如果需要通过证书传递密钥server.set证书路径(cert_path)
5
11.11 使用邮件主题模板
server = smtplib.SMTP_SSL(smtp_server, port)server = smtplib.SMTP serversert = smtplib.SMTP(smtphost, port)
2
11.12 使用邮件内容模板
server = smtplib.SMTP_SSL(smtp_server, port)server = smtplib.SMTP serversert = smtplib.SMTP(smtphost, port)
3


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格