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尊称姓名职称SubjectBodyBodyWordAttachments
someone@example.com尊敬的张三教授会议通知(可留空)C:\Mail\会议通知正文.docxC:\Mail\邀请函.pdf

如果 Body 中已经包含完整称呼,请将“尊称”“姓名”“职称”留空,避免重复显示。使用 BodyWord 时,程序会在 Word 正文前插入自动生成的称呼;若 Word 文件本身已包含称呼,请将“尊称”“姓名”“职称”留空,避免重复。

Word 正文是怎么写进邮件的(1.1 版修复说明)

旧版本调用 Selection.InsertFile 把 Word 文件插入邮件正文,这个方法在 Outlook 的 Word 编辑器里会“假成功”:不报错,但正文里一个字都没有,
所以发出去的邮件只有称呼、没有正文。现在改为两条更可靠的路子,并带结果校验:

  1. WordOpenXML:读取 Word 文档的完整结构后写入邮件编辑器,保留字体、字号、段落、表格、图片(首选,不占用剪贴板);
  2. 原格式复制粘贴:第一条路写不进去时自动兜底;
  3. 两条都失败时,该条记录标记为“处理失败”,错误信息写入 Error 列,不会悄悄发出一封空正文邮件。

批量结束时会自动关闭后台隐藏的 Word 实例。

运行源码

  1. 安装 Python 3.11 及以上(安装时勾选 Add Python to PATH)。
  2. 在本目录打开命令提示符。
  3. 执行:
    py -m pip install -r requirements.txt
  4. 执行:
    py excel_mail_assistant.py

打包为 EXE

  1. 安装依赖:
    py -m pip install -r requirements.txt
  2. 双击 build_exe.bat,或在命令提示符执行:
    build_exe.bat
  3. 成功后 EXE 位于 dist\Excel个性化批量邮件助手.exe。
  4. 将该 EXE 复制到 Windows 电脑上运行。首次启动可能被 Windows SmartScreen 或单位终端安全软件提示;请按单位软件安装政策处理,不要随意关闭安全防护。

建议的发送流程

  1. 先复制一份 Excel 测试文件。
  2. 使用 2–3 条测试记录,收件人全部填写自己的测试邮箱。
  3. 导入后查看预检结果,解决所有问题。
  4. 预览每封邮件(预览窗口会显示 Word 文件里的实际文字)。
  5. 生成草稿。
  6. 在 Outlook 草稿箱打开并检查正文、收件人、附件。
  7. 确认无误后再进行小批量正式发送。
  8. 检查 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 登录状态。
您必须 登录 才能发表评论