You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Windows系统下使用自由开源软件(FLOSS)或脚本将.mbox文件转换为.pst格式?

如何在Windows系统下使用自由开源软件(FLOSS)或脚本将.mbox文件转换为.pst格式?

你需要把Gmail导出的.mbox转成Outlook能用的.pst,还要求不能用付费或在线工具,我给你整理两个靠谱的方案,都是符合你要求的自由开源或者脚本方法:

一、使用FLOSS工具:Mozilla Thunderbird + 开源插件

Thunderbird是完全免费开源的邮件客户端,配合开源插件就能完成格式转换,步骤很清晰:

    1. 先安装Windows版的Mozilla Thunderbird,直接从官方渠道下载即可,它是完全开源的。
    1. 导入.mbox文件到Thunderbird:打开Thunderbird后,点击顶部菜单的「工具」→「导入」,在弹出的向导里选「邮件」,接着选「文件(mbox格式)」,找到你从Google Takeout导出的.mbox文件,跟着提示完成导入,邮件就会出现在Thunderbird的文件夹中。
    1. 用开源插件导出为.pst:安装「ImportExportTools NG」插件(同样是开源工具),安装后右键点击Thunderbird里导入的邮件文件夹,选择「ImportExportTools NG」→「导出文件夹为PST文件」,等待处理完成后,就能得到标准的.pst文件,直接导入Outlook即可。

二、用Python脚本实现转换(依赖Outlook客户端)

如果你愿意自己写脚本,这个方法可以直接调用Outlook的接口生成.pst,不需要额外的转换工具,步骤如下:

    1. 先安装必要的Python库:打开命令提示符,运行pip install mailbox pywin32
    1. 编写脚本:下面是一个基础的示例脚本,它会读取.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)
    1. 运行脚本:把代码保存为mbox2pst.py,替换里面的文件路径,然后在命令提示符里运行python mbox2pst.py即可。注意这个脚本需要你的Windows上已经安装了Microsoft Outlook,因为它调用了Outlook的系统接口来创建PST。

备注:内容来源于stack exchange,提问作者Foad

火山引擎 最新活动