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

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

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

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

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


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

python 复制代码
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 发送邮件函数封装

python 复制代码
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() 方法发送,无需手动操作。


🔄 批量发邮件逻辑整合

python 复制代码
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),都可以继续告诉我,我可以为你定制更全面的自动化脚本!

相关推荐
想会飞的蒲公英2 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
深度研习笔记3 小时前
OpenCV工业视觉实战09|项目EXE打包+工控机无环境部署+后台常驻运行,彻底脱离Python环境,完成项目最终交付
python·opencv·webpack
CCPC不拿奖不改名4 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
Marst Code4 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
databook4 小时前
当散点图不够用时:用 t-SNE 可视化多维数据
python·数据分析·数据可视化
我的xiaodoujiao7 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
weixin_408099677 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
去码头整点薯条ing8 小时前
某当网登录滑块【协议+OCR】
爬虫·python·ocr
赶紧写完去睡觉8 小时前
Anaconda 创建虚拟环境与使用
python·pycharm·conda