[特殊字符] Excel 读取收件人 + Outlook 批量发送带附件邮件 —— Python 自动化实战

发布于:2025-07-08 ⋅ 阅读:(10) ⋅ 点赞:(0)

许多公司定期需要将不同部门或客户的报告发送给指定人员。手动操作容易出错、耗时且繁琐。今天这篇文章教你如何利用 Python 实现:

  • 🧩 从 Excel 中读取“收件人 + 抄送人 + 附件文件路径”;

  • 📤 使用 win32com.client 调用 Outlook 自动生成并发送邮件;

  • ✅ 附加模板正文,并保持批量发送规范无需手工操作。


📥 从 Excel 中读取部门、收件人与附件路径

from openpyxl import load_workbook

wb = load_workbook("邮件地址.xlsx")
ws = wb.active
address = {}
for i in range(2, ws.max_row + 1):
    dept = ws[f"A{i}"].value
    to_add = ws[f"B{i}"].value
    cc_add = ws[f"C{i}"].value
    address[dept] = [to_add, cc_add]
  • 使用 openpyxl 读取 Excel;

  • 构建键为 “部门名”,值为 [收件人, 抄送人] 的字典,方便后续遍历映射。


✉️ 使用 Outlook 发送邮件函数封装

import win32com.client as win32

def Send_mail(to_add, cc_add, file_path, dept):
    outlook = win32.Dispatch('Outlook.Application')
    mail = outlook.CreateItem(0)
    mail.To = to_add
    mail.CC = cc_add
    mail.Subject = f"{dept}年假情况"
    mail.Attachments.Add(file_path)
    mail.Body = (
        f"Dear All,\n这是{dept}的年假情况,请查收!谢谢。\n\n"
        "Best regards!\n人事部 小李"
    )
    mail.Send()

 

  • 借助 CreateItem(0) 新建邮件项目;

  • 设置收件人、抄送人、主题、正文与附件 (Medium, StackOverflow);

  • 使用 .Send() 方法发送,无需手动操作。


🔄 批量发邮件逻辑整合

import os

for dept, (to_add, cc_add) in address.items():
    file_path = os.path.join(
        os.getcwd(),
        "年假_按部门",
        f"年假情况_{dept}.xlsx"
    )
    Send_mail(to_add, cc_add, file_path, dept)

print("邮件发送完成。")
  • 遍历 Excel 中所有部门;

  • 自动拼接附件路径,并调用 Send_mail()

  • 最后打印“邮件发送完成”。


🖼️ 结果展示区


✅ 小贴士 & 实用建议

  • Windows 必须安装 Outlook,且已登录账户,才能通过 win32com 正常发送 (StackOverflow);

  • 可设置 mail.SentOnBehalfOfName 指定发件人 (StackOverflow);

  • 若需要发送多个附件,可多次调用 mail.Attachments.Add(...)

  • 为防止安全警告,可使用 mail.Display(True) 手动确认后再发送;

  • 可加入异常处理逻辑,避免单个失败阻断整个批量流程。


⏭️ 拓展建议

功能 实现建议
📋 动态正文模板 从 Word/HTML 模板读取正文,可支持参数化
✉️ 邮件保留草稿库 使用 .Save() 保存为草稿供审核
📅 定时发送功能 搭配 task scheduler 实现定时运行
💾 执行日志写入 记录邮件发送状态与时间备查
🧪 测试环境支持 可追加测试邮箱列表及时验证功能


🧠 总结

通过本篇脚本,你学会了:

  • 🗄️ Excel 提取邮件地址与部门映射;

  • 📬 Outlook 自动化发送邮件,附带附件;

  • 🔁 批量快速地处理多个邮件任务,提高办公效率。

  更多实用案例,代码,素材如下:

自取链接:https://pan.quark.cn/s/a46f30accea2

如果你希望增加 HTML 正文、附件格式转换、发送失败重试机制、或多平台支持(如对接 Gmail/Exchange API),都可以继续告诉我,我可以为你定制更全面的自动化脚本!

 

 


网站公告

今日签到

点亮在社区的每一天
去签到