新手必看!如何用Python实现批量发送带附件的邮件


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

新手如何用Python实现批量发送邮件带附件?

准备工作

  1. Python环境:确保你的电脑上已安装Python环境。
  2. 邮箱账户:准备一个支持SMTP服务的邮箱账户(如Gmail、Outlook或QQ邮箱等),并获取其SMTP服务器地址及端口。
  3. 开启SMTP服务:在邮箱设置中开启SMTP服务,并记录下授权码(非邮箱密码,用于第三方应用登录)。
  4. 安装库:如果尚未安装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)

注意事项与优化建议

  1. 安全性:切勿在代码中直接硬编码邮箱密码或授权码,建议使用环境变量或配置文件来存储敏感信息。
  2. 错误处理:在实际应用中,应增加更详细的错误处理逻辑,比如网络异常、认证失败等情况的处理。
  3. 批量发送策略:对于大量收件人,考虑分批发送,避免一次性发送过多邮件导致被标记为垃圾邮件。
  4. 日志记录:记录邮件发送日志,便于后续追踪和问题排查。
  5. 使用第三方库:考虑使用yagmailsmtplib(其实常用搭配如yagmail会进一步简化流程,但基础原理相同)等第三方库简化邮件发送流程,这些库提供了更高级的API,使得代码更加简洁易读。

通过上述步骤,即使是编程新手也能快速掌握使用Python批量发送带附件邮件的技巧,这项技能不仅适用于日常办公,还能在数据分析报告分发、自动化通知系统等多个场景中发挥重要作用,随着实践的深入,你可以不断探索和优化代码,使其更加符合个人或团队的工作需求,希望本文能成为你自动化办公旅程中的一个有用起点!

未经允许不得转载! 作者:python1991知识网,转载或复制请以超链接形式并注明出处Python1991知识网

原文地址:https://www.python1991.cn/5510.html发布于:2026-04-21