如何在Windows系统下使用自由开源软件(FLOSS)或脚本将.mbox文件转换为.pst格式?
如何在Windows系统下使用自由开源软件(FLOSS)或脚本将.mbox文件转换为.pst格式?
你需要把Gmail导出的.mbox转成Outlook能用的.pst,还要求不能用付费或在线工具,我给你整理两个靠谱的方案,都是符合你要求的自由开源或者脚本方法:
一、使用FLOSS工具:Mozilla Thunderbird + 开源插件
Thunderbird是完全免费开源的邮件客户端,配合开源插件就能完成格式转换,步骤很清晰:
- 先安装Windows版的Mozilla Thunderbird,直接从官方渠道下载即可,它是完全开源的。
- 导入.mbox文件到Thunderbird:打开Thunderbird后,点击顶部菜单的「工具」→「导入」,在弹出的向导里选「邮件」,接着选「文件(mbox格式)」,找到你从Google Takeout导出的.mbox文件,跟着提示完成导入,邮件就会出现在Thunderbird的文件夹中。
- 用开源插件导出为.pst:安装「ImportExportTools NG」插件(同样是开源工具),安装后右键点击Thunderbird里导入的邮件文件夹,选择「ImportExportTools NG」→「导出文件夹为PST文件」,等待处理完成后,就能得到标准的.pst文件,直接导入Outlook即可。
二、用Python脚本实现转换(依赖Outlook客户端)
如果你愿意自己写脚本,这个方法可以直接调用Outlook的接口生成.pst,不需要额外的转换工具,步骤如下:
- 先安装必要的Python库:打开命令提示符,运行
pip install mailbox pywin32。
- 先安装必要的Python库:打开命令提示符,运行
- 编写脚本:下面是一个基础的示例脚本,它会读取.mbox文件,创建新的.pst文件并把邮件逐个导入进去:
import mailbox import win32com.client import os from datetime import datetime def mbox_to_pst(mbox_path, pst_save_path): # 初始化Outlook应用 outlook = win32com.client.Dispatch("Outlook.Application") namespace = outlook.GetNamespace("MAPI") # 创建新的PST文件(如果已存在则先删除) if os.path.exists(pst_save_path): os.remove(pst_save_path) namespace.AddStore(pst_save_path) pst_store = None for store in namespace.Stores: if store.FilePath == pst_save_path: pst_store = store break if not pst_store: print("创建PST文件失败") return # 获取PST的根收件箱文件夹 pst_root = pst_store.GetDefaultFolder(6) # 读取并处理mbox中的每一封邮件 mbox = mailbox.mbox(mbox_path) for msg in mbox: # 创建Outlook邮件项 outlook_msg = outlook.CreateItem(0) # 设置邮件基本信息 outlook_msg.Subject = msg['subject'] if msg['subject'] else "无主题" # 处理邮件内容,兼容多部分邮件 if msg.is_multipart(): body = "" for part in msg.walk(): if part.get_content_type() == 'text/plain': body += part.get_payload(decode=True).decode('utf-8', errors='replace') outlook_msg.Body = body else: outlook_msg.Body = msg.get_payload(decode=True).decode('utf-8', errors='replace') outlook_msg.SenderName = msg['from'] if msg['from'] else "" outlook_msg.To = msg['to'] if msg['to'] else "" # 设置邮件发送时间 if 'date' in msg: try: send_time = datetime.strptime(msg['date'], "%a, %d %b %Y %H:%M:%S %z") outlook_msg.SentOn = send_time.astimezone() except Exception as e: print(f"解析邮件日期失败:{e}") # 保存并移动到PST文件夹 outlook_msg.Save() outlook_msg.Move(pst_root) # 移除PST存储(避免Outlook一直挂载该文件) namespace.RemoveStore(pst_store) print(f"转换完成,PST文件已保存到:{pst_save_path}") # 替换成你的文件路径 mbox_path = r"C:\path\to\your\gmail_export.mbox" pst_save_path = r"C:\path\to\output\converted.pst" mbox_to_pst(mbox_path, pst_save_path)
- 运行脚本:把代码保存为
mbox2pst.py,替换里面的文件路径,然后在命令提示符里运行python mbox2pst.py即可。注意这个脚本需要你的Windows上已经安装了Microsoft Outlook,因为它调用了Outlook的系统接口来创建PST。
- 运行脚本:把代码保存为
备注:内容来源于stack exchange,提问作者Foad




