Excel 个性化批量邮件助手(Windows)
功能
- 从
.xlsx/.xlsm工作簿读取每位收件人的邮箱、尊称、姓名、职称、主题、正文和最多 5 个附件路径。 - 正文可使用
Body纯文本,也可在BodyWord列指定 Word 文件(.docx、.doc、.docm、.rtf),把文档内容原样写进邮件正文(保留字体、段落、表格、图片)。 - 自动组合“尊称 + 姓名 + 职称”作为开头称呼。
- 预检邮箱字段、主题、正文、Word 正文文件和附件是否存在。
- 预览单封邮件(会读出 Word 文件里的实际文字)。
- 默认先生成 Outlook 草稿;也支持在应用内二次确认后逐封发送。
- 将状态、处理时间和错误信息写回 Excel,已标记“已发送”的记录会被跳过。
- 导出 CSV 预检/处理报告。
重要前提
- 本程序针对 Windows + 传统版 Outlook (Classic Outlook),依赖 Outlook COM 自动化。
- 本机必须安装 Microsoft Word:Word 正文要靠 Word 解析后写入邮件(只装 WPS 不支持这条路,请改用
Body纯文本,或在装有 Word 的电脑上运行)。 - 不适用于“新版 Outlook”,它不支持这种 COM 自动化。
- 发送操作会真实发送邮件;请先用测试邮箱验证。
- “已发送”表示 Outlook 已接受发送请求,不保证收件人最终收到;请检查退信和 Outlook 的已发送邮件。
- 建议使用独立副本进行测试。程序写回 Status、处理时间、Error 三列。
- 为防止重复发送,发送成功后会立即尝试写回 Excel。如果 Excel 被其他程序锁定,程序会停止后续发送;仍需核对 Outlook“已发送邮件”以确认已提交的邮件。
Excel 模板
第一行必须包含以下列名(大小写不敏感):
To:收件人邮箱尊称:称谓前缀,例如“尊敬的”;可以留空姓名:收件人姓名,例如“张三”;可以留空职称:职称或称谓,例如“教授”“研究员”;可以留空Subject:邮件主题Body:正文内容(纯文本)。若使用BodyWord,此列可以留空。BodyWord:可选,作为邮件正文的 Word 文件路径,支持.docx、.doc、.docm、.rtf。可填写完整路径,例如C:\Mail\会议通知正文.docx;也可填写相对路径,例如会议通知正文.docx,相对路径按 Excel 文件所在文件夹解析。Attachments、Attachment2、Attachment3、Attachment4、Attachment5:最多填写 5 个附件的路径(同样支持相对路径,按 Excel 所在文件夹解析)。为兼容旧表格,Attachments单元格也支持用分号;分隔多个路径,但全部附件合计不得超过 5 个。
程序会将“尊称 + 姓名 + 职称”自动组合成邮件开头,并在末尾补充中文冒号。例如:
| 尊称 | 姓名 | 职称 | 自动生成的称呼 |
|---|---|---|---|
| 尊敬的 | 张三 | 教授 | 尊敬的张三教授: |
| 尊敬的 | 李四 | 研究员 | 尊敬的李四研究员: |
| 尊敬的 | 王五 | (留空) | 尊敬的王五: |
如果三个字段都留空,程序会兼容读取旧版表格中的 称呼 列(例如“尊敬的张教授:”)。因此,旧版 Excel 文件仍可继续使用。
可选列(程序会自动创建):
Status处理时间Error
示例:
| To | 尊称 | 姓名 | 职称 | Subject | Body | BodyWord | Attachments |
|---|---|---|---|---|---|---|---|
| someone@example.com | 尊敬的 | 张三 | 教授 | 会议通知 | (可留空) | C:\Mail\会议通知正文.docx | C:\Mail\邀请函.pdf |
如果 Body 中已经包含完整称呼,请将“尊称”“姓名”“职称”留空,避免重复显示。使用 BodyWord 时,程序会在 Word 正文前插入自动生成的称呼;若 Word 文件本身已包含称呼,请将“尊称”“姓名”“职称”留空,避免重复。
Word 正文是怎么写进邮件的(1.1 版修复说明)
旧版本调用 Selection.InsertFile 把 Word 文件插入邮件正文,这个方法在 Outlook 的 Word 编辑器里会“假成功”:不报错,但正文里一个字都没有,
所以发出去的邮件只有称呼、没有正文。现在改为两条更可靠的路子,并带结果校验:
WordOpenXML:读取 Word 文档的完整结构后写入邮件编辑器,保留字体、字号、段落、表格、图片(首选,不占用剪贴板);- 原格式复制粘贴:第一条路写不进去时自动兜底;
- 两条都失败时,该条记录标记为“处理失败”,错误信息写入
Error列,不会悄悄发出一封空正文邮件。
批量结束时会自动关闭后台隐藏的 Word 实例。
运行源码
- 安装 Python 3.11 及以上(安装时勾选 Add Python to PATH)。
- 在本目录打开命令提示符。
- 执行:
py -m pip install -r requirements.txt - 执行:
py excel_mail_assistant.py
打包为 EXE
- 安装依赖:
py -m pip install -r requirements.txt - 双击
build_exe.bat,或在命令提示符执行:build_exe.bat - 成功后 EXE 位于
dist\Excel个性化批量邮件助手.exe。 - 将该 EXE 复制到 Windows 电脑上运行。首次启动可能被 Windows SmartScreen 或单位终端安全软件提示;请按单位软件安装政策处理,不要随意关闭安全防护。
建议的发送流程
- 先复制一份 Excel 测试文件。
- 使用 2–3 条测试记录,收件人全部填写自己的测试邮箱。
- 导入后查看预检结果,解决所有问题。
- 预览每封邮件(预览窗口会显示 Word 文件里的实际文字)。
- 生成草稿。
- 在 Outlook 草稿箱打开并检查正文、收件人、附件。
- 确认无误后再进行小批量正式发送。
- 检查 Outlook 已发送邮件、退信,并保留 CSV 报告。
常见问题
Q:生成的草稿里正文是空的,只有一句称呼?
A:说明 Word 内容没写进去。本版已修复该问题。若仍出现,请检查:
- 是否用的是传统版 Outlook(“新版 Outlook”开关关闭);
- 本机是否装了 Microsoft Word(WPS 不行);
- 该条记录的
Error列写了具体原因;把原因发回来即可定位。
Q:Word 里的图片、表格能保留吗?
A:可以。表格会作为邮件正文里的表格保留,图片会作为内嵌图片写入正文(Word 文档自身是“文本框排版”时,图片可能同时出现在附件栏)。
Q:Excel 里状态显示“已发送”,但我需要重发怎么办?
A:把该行 Status 清空(或改成别的值),程序就会重新处理。
Q:正文里想带上 Outlook 签名?
A:Word 正文是插入到正文开头的,草稿里已有的签名会保留在下方,可在 Outlook 草稿箱里检查。
已知限制
Body纯文本正文会以 HTML 格式设置为仿宋_GB2312、三号字(16 pt),并保留 Excel 正文中的换行;收件人电脑若未安装仿宋_GB2312,Outlook 可能使用替代字体。- 使用
BodyWord时尽量保留字体、段落、表格和图片;复杂页眉页脚、分节、页码、浮动对象在邮件中会丢失或被简化,发送前请先看一封草稿确认。 - 预览窗口只显示 Word 的文字内容,不显示排版和图片。
- 已标记“已生成草稿”的记录默认不会再次生成草稿。请注意:“发送所选/全部邮件”会新建并直接发送邮件,而不是发送 Outlook 中已有的草稿。
- 最多支持 5 个附件。
- 应用不保存邮箱密码,使用本机当前 Outlook 登录状态。
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
Jingzhi Yan's Blog
本文地址: AI手搓邮件群发小助手
本文地址: AI手搓邮件群发小助手
您必须 登录 才能发表评论