我试图将(任何用户的)邮箱从 Exchange 2010 服务器导出到 PST 文件。存档的最佳方式是什么?
首先,我查看了 COM-Interop 模型。但这似乎只是为了能够导出当前登录到 Outlook 的用户的邮箱。或者我在那里遗漏了什么?我试过这个:
Dim app As New Outlook.Application()
Dim ns As Outlook.NameSpace = app.GetNamespace("MAPI")
ns.AddStore("C:\backup.pst")
Dim backupFolder As Outlook.MAPIFolder = ns.Session.Folders.GetLast()
Dim selectedMailBox As Outlook.MAPIFolder = ns.Folders("mymail@company.com") 'NOT Working
selectedMailBox.CopyTo(backupFolder)
ns.RemoveStore(backupFolder)
后来我发现了这个 PowerShell 函数:New-MailboxExportRequest
遗憾的是我找不到从 .NET 调用它的方法。是否有可能从 .NET 调用它?
或者我是否需要使用任何其他库从 Exchange 导出文件? (也许使用 POP3 获取所有邮件并将它们转换为 PST?)
最佳答案
您可以使用 Redemption为此(我是它的作者)- 以可以访问相关邮箱的域用户身份运行您的代码并调用 RDOSession.LogonExchangeMailbox .然后,您可以使用 RDOSession.Stores.GetSharedMailbox
打开其他用户的邮箱。一旦你有了 RDOStore对象,您将能够访问所有以 RDOStore.IPMRootFolder
开头的文件夹和消息。
要复制到 PST 存储区,您可以使用 RDOSession.Stores.AddPstStore
添加新的或现有的 PST 文件。
要复制所有文件夹,使用类似下面的东西
foreach (RDOFolder sourceFolder in ExchangeStore.IPMRootFolder.Folders)
{
sourceFolder.CopyTo(PstStore.IPMRootFolder);
}
关于.net - 将邮箱从 Exchange Server 导出到 PST 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13798821/