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

部署运行你感兴趣的模型镜像

许多公司定期需要将不同部门或客户的报告发送给指定人员。手动操作容易出错、耗时且繁琐。今天这篇文章教你如何利用 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),都可以继续告诉我,我可以为你定制更全面的自动化脚本!

 

 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happydog007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值