新手必看!如何用Python实现批量发送带附件的邮件
在数字化办公日益盛行的今天,掌握一些自动化技巧无疑能大幅提升我们的工作效率,对于新手而言,利用Python来批量发送带附件的邮件,不仅是一项实用的技能,还能在处理大量重复性任务时节省大量时间,本文将详细介绍如何使用Python的smtplib和email库来实现这一功能,即使是编程新手也能轻松上手。

准备工作
- Python环境:确保你的电脑上已安装Python环境。
- 邮箱账户:准备一个支持SMTP服务的邮箱账户(如Gmail、Outlook或QQ邮箱等),并获取其SMTP服务器地址及端口。
- 开启SMTP服务:在邮箱设置中开启SMTP服务,并记录下授权码(非邮箱密码,用于第三方应用登录)。
- 安装库:如果尚未安装
smtplib(通常Python自带)和email库,但(实际上这两个无需额外安装,若需处理复杂邮件内容可安装yagmail等简化操作的库,此处我们以基础库为例)确保你的Python环境已准备好。
编写代码
以下是一个简单的Python脚本示例,用于批量发送带附件的邮件:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os
def send_emails(sender_email, sender_password, smtp_server, smtp_port, receivers, subject, body, attachment_path):
"""
发送带附件的邮件给多个收件人
:param sender_email: 发件人邮箱
:param sender_password: 发件人邮箱SMTP授权码
:param smtp_server: SMTP服务器地址
:param smtp_port: SMTP服务器端口
:param receivers: 收件人列表
:param subject: 邮件主题
:param body: 邮件正文
:param attachment_path: 附件路径
"""
# 创建MIMEMultipart对象,并设置邮件基本信息
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = ', '.join(receivers) # 将收件人列表转换为字符串
msg['Subject'] = subject
# 添加邮件正文
msg.attach(MIMEText(body, 'plain'))
# 添加附件
if attachment_path and os.path.exists(attachment_path):
with open(attachment_path, 'rb') as f:
part = MIMEApplication(f.read())
part.add_header('Content-Disposition', 'attachment', filename=os.path.basename(attachment_path))
msg.attach(part)
# 连接SMTP服务器并发送邮件
try:
server = smtplib.SMTP_SSL(smtp_server, smtp_port) # 使用SSL加密连接
server.login(sender_email, sender_password)
server.sendmail(sender_email, receivers, msg.as_string())
print("邮件发送成功!")
except Exception as e:
print(f"邮件发送失败: {e}")
finally:
server.quit()
# 示例用法
if __name__ == "__main__":
sender_email = "your_email@example.com"
sender_password = "your_smtp_authorization_code"
smtp_server = "smtp.example.com"
smtp_port = 465 # 常见SSL端口
receivers = ["receiver1@example.com", "receiver2@example.com"]
subject = "测试邮件"
body = "这是一封测试邮件,请查收附件。"
attachment_path = "/path/to/your/attachment.pdf"
send_emails(sender_email, sender_password, smtp_server, smtp_port, receivers, subject, body, attachment_path)
注意事项与优化建议
- 安全性:切勿在代码中直接硬编码邮箱密码或授权码,建议使用环境变量或配置文件来存储敏感信息。
- 错误处理:在实际应用中,应增加更详细的错误处理逻辑,比如网络异常、认证失败等情况的处理。
- 批量发送策略:对于大量收件人,考虑分批发送,避免一次性发送过多邮件导致被标记为垃圾邮件。
- 日志记录:记录邮件发送日志,便于后续追踪和问题排查。
- 使用第三方库:考虑使用
yagmail、smtplib(其实常用搭配如yagmail会进一步简化流程,但基础原理相同)等第三方库简化邮件发送流程,这些库提供了更高级的API,使得代码更加简洁易读。
通过上述步骤,即使是编程新手也能快速掌握使用Python批量发送带附件邮件的技巧,这项技能不仅适用于日常办公,还能在数据分析报告分发、自动化通知系统等多个场景中发挥重要作用,随着实践的深入,你可以不断探索和优化代码,使其更加符合个人或团队的工作需求,希望本文能成为你自动化办公旅程中的一个有用起点!
未经允许不得转载! 作者:python1991知识网,转载或复制请以超链接形式并注明出处Python1991知识网。
原文地址:https://www.python1991.cn/5510.html发布于:2026-04-21





