Apple Mail MBOX → Outlook PST 改进版
本压缩包包含两种实现:
| 文件 | 适用场景 | 保真程度 | 额外要求 |
|---|---|---|---|
mbox_to_pst_improved.py | 不想安装第三方 MAPI 组件;先完成大部分邮件迁移 | 尽力保留 | Python、pywin32、经典版 Outlook |
mbox_to_pst_redemption.py | 发件人、原始日期、邮件状态和完整 MIME 结构必须尽量准确 | 推荐,高保真 | 上述环境,另需安装并注册 Redemption |
两个脚本都只适用于 Windows 的经典版 Outlook/MAPI。仅安装“新版 Outlook”无法使用 Outlook COM。
一、主要改进
- 恢复 Apple Mail
.mbox目录层级; - 解码中文主题、姓名和多种正文字符集;
- 导入纯文本、HTML、普通附件和 CID 内嵌图片;
- 导入 To、Cc、Bcc、Reply-To;
- 尽量保留发件人、发送/接收时间、Message-ID、References 和原始邮件头;
- 尽量保留已读/未读、旗标、重要性和草稿/已发送状态;
- 创建 Unicode PST,并按 PST 实际文件路径识别正确的 Store,不再使用不可靠的
Folders.GetLast(); - 使用 SQLite 保存断点,脚本中断后可继续,并避免重复导入;
- 失败邮件自动另存为
.eml,同时生成日志与 CSV 清单。
二、运行前准备
- 备份原始 MBOX 文件。
- 安装并至少启动、初始化一次经典版 Outlook。
- 安装 Python 3.10 或更高版本。
- 安装依赖:
py -m pip install --upgrade pywin32建议先用一个小 MBOX 和一个全新的测试 PST 验证,再导入全部邮件。
三、方案 A:纯 pywin32 改进版
直接运行默认路径:
py mbox_to_pst_improved.py指定输入目录和输出 PST:
py mbox_to_pst_improved.py "E:\email2026" "D:\test1\Mac_Archive_2026.pst"显示详细日志:
py mbox_to_pst_improved.py "E:\email2026" "D:\test1\Mac_Archive_2026.pst" --verbose此版本无需 Redemption,但 Outlook 对象模型对发件人、原始时间等属性存在只读限制。脚本会在第一次保存前写入底层 MAPI 属性,并把原始值另存为自定义 MAPI 属性;不同 Outlook/PST 版本仍可能拒绝部分字段。因此,导入完成后应检查“发件人”“接收时间”“已发送状态”和附件。
四、方案 B:Redemption 高保真版(推荐)
安装并正确注册与 Python/Outlook 位数匹配的 Redemption 后运行:
py mbox_to_pst_redemption.py "E:\email2026" "D:\test1\Mac_Archive_2026_RDO.pst"该版本把每封邮件的完整 RFC822/MIME 字节交给 Redemption 的 MIME→MAPI 转换器,不是把 Subject、Body、附件拆开后重新拼装,通常能更可靠地保留原始元数据和 MIME 结构。
Redemption 的评估、企业内部使用和软件分发应遵守其许可条款;本压缩包不包含其 DLL。
五、断点、重复导入与失败恢复
默认会在 PST 旁生成:
Mac_Archive_2026.pst.import_state.sqlite3脚本按“目标 PST + 目标文件夹 + 邮件 SHA-256”记录成功项。再次运行时,成功导入过的邮件会跳过。
强制重新导入:
py mbox_to_pst_improved.py "E:\email2026" "D:\test1\Mac_Archive_2026.pst" --force--force 可能制造重复邮件。需要真正从头开始时,更稳妥的做法是使用一个新的 PST,并删除对应的断点数据库。
失败时会生成:
Mac_Archive_2026.pst.import.log
Mac_Archive_2026.pst.failures.csv
Mac_Archive_2026_failed_eml\失败的原始邮件会保存在 failed_eml 目录中,便于单独检查或重新导入。
六、退出码
| 退出码 | 含义 |
|---|---|
| 0 | 全部处理成功,或仅跳过已导入邮件 |
| 1 | 转换完成,但存在失败邮件 |
| 2 | 输入路径不存在或 Outlook/Redemption 初始化失败等运行错误 |
| 3 | 输入目录中未发现 MBOX 数据卷 |
七、Apple Mail 常见目录形式
脚本支持这些常见形式:
E:\email2026\收件箱.mbox\mbox
E:\email2026\工作.mbox\mbox
E:\email2026\归档\2025.mbox\mbox也支持直接把单个 MBOX 文件作为输入路径。
八、验证建议
正式交付前至少抽查以下邮件:
- 一封中文主题和中文发件人邮件;
- 一封 HTML 邮件;
- 一封同时含普通附件和正文内嵌图片的邮件;
- 一封已发送邮件和一封收件箱邮件;
- 一封日期较早、时区明确的邮件;
- 一封包含 Cc/Bcc、Reply-To 或特殊字符附件名的邮件。
高保真要求较高时,优先使用 Redemption 版,并保留原始 MBOX 作为最终备份。