[特殊字符] 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),都可以继续告诉我,我可以为你定制更全面的自动化脚本!

相关推荐
瓶子xf15 分钟前
Excel制作滑珠图、哑铃图
excel
天天进步201520 分钟前
Python游戏开发引擎设计与实现
开发语言·python·pygame
数据狐(DataFox)1 小时前
CTE公用表表达式的可读性与性能优化
经验分享·python·sql
蹦蹦跳跳真可爱5891 小时前
Python----MCP(MCP 简介、uv工具、创建MCP流程、MCP客户端接入Qwen、MCP客户端接入vLLM)
开发语言·人工智能·python·语言模型
No0d1es1 小时前
第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年1月22日真题
python·青少年编程·蓝桥杯·选拔赛
MediaTea1 小时前
Python 库手册:getopt Unix 风格参数解析模块
服务器·开发语言·python·unix
王尼莫啊1 小时前
【立体标定】圆形标定板标定python实现
开发语言·python·opencv
cosX+sinY2 小时前
10 卷积神经网络
python·深度学习·cnn
President~wolf2 小时前
数据处理--生成Excel文档
excel
非极限码农2 小时前
基于Deepseek的语言润色助手API实现与部署指南
python·微服务·自然语言处理