You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码将O365邮箱导出为.pst文件?求可行方案

O365邮箱导出为PST的实现方案

一、手动简便导出方法

如果用Outlook客户端连接了O365邮箱,直接用自带功能就能导出:

  • 打开Outlook,选中要导出的O365账户
  • 点击「文件」→「打开和导出」→「导入/导出」
  • 选择「导出到文件」→「Outlook数据文件(.pst)」,跟着向导选择要导出的文件夹、设置保存路径即可
  • 注意:导出过程中不要断网,Outlook也不能关闭

二、代码实现方案

1. 用Redemption库实现

你已有Redemption授权,可按以下流程操作:

  • 初始化RDOSession对象,通过O365账号密码或已有的Outlook配置文件登录
  • 创建目标PST文件:
    RDOSession session = new RDOSession();
    RDOPstStore pstStore = session.LogonPstStore(@"D:\O365Backup\MyMailBackup.pst");
    
  • 递归遍历O365邮箱的所有文件夹(含收件箱、已发送、自定义文件夹),将文件夹内的邮件复制到PST对应路径:
    // 示例:复制收件箱内容
    RDOFolder sourceInbox = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
    RDOFolder targetInbox = pstStore.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
    CopyFolderContents(sourceInbox, targetInbox);
    
    // 递归复制文件夹内容的方法
    void CopyFolderContents(RDOFolder source, RDOFolder target)
    {
        // 复制当前文件夹下的所有邮件
        foreach (RDOItem item in source.Items)
        {
            item.CopyTo(target);
        }
        // 复制子文件夹
        foreach (RDOFolder subFolder in source.Folders)
        {
            RDOFolder newSubFolder = target.Folders.Add(subFolder.Name);
            CopyFolderContents(subFolder, newSubFolder);
        }
    }
    
  • 复制完成后关闭PST存储,释放相关资源

2. 用EWS(Exchange Web Services)实现

EWS需先获取O365邮箱的访问权限,步骤如下:

  • 初始化EWS服务,配置O365的EWS地址(https://outlook.office365.com/EWS/Exchange.asmx),设置身份验证(O365推荐使用OAuth)
  • 递归遍历邮箱所有文件夹:通过FindFolders方法获取根文件夹下的所有子文件夹
  • 对每个文件夹,用FindItems拉取所有邮件,并下载完整内容(含附件)
  • 借助第三方库(如Aspose.Email、MsgKit)将下载的邮件转换为MAPI格式,再写入PST文件:
    // 示例用Aspose.Email创建PST并写入邮件
    using (PersonalStorage pst = PersonalStorage.Create(@"D:\O365Backup\EWSBackup.pst", FileFormatVersion.Unicode))
    {
        // 创建对应文件夹
        FolderInfo pstFolder = pst.CreateFolder("自定义文件夹");
        // 假设ewsItem是从EWS获取的邮件对象
        MapiMessage msg = MapiMessage.Load(new MemoryStream(ewsItem.MimeContent.Content));
        pstFolder.AddMessage(msg);
    }
    

三、Graph API相关补充

目前Graph API没有直接导出PST的原生功能,只能批量拉取邮件内容后,再通过第三方库生成PST,实现复杂度高于EWS和Redemption


内容的提问来源于stack exchange,提问作者thinkjohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:25:48