.net - 将邮箱从 Exchange Server 导出到 PST 文件

标签 .net vb.net powershell outlook exchange-server

我试图将(任何用户的)邮箱从 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/

相关文章:

powershell - 获取磁盘 IO 性能计数器

c# - 为什么 ReSharper 在将属性转换为自动属性时需要扫描所有文件?

c# - 如何获取任务管理器中显示的应用程序内存使用情况?

c# - 在多个链式 LINQ 查询中使用一个变量

vb.net - 拆分字符串并为变量赋值

VB.NET 和 Excel 表格格式

azure - 如何在 Azure DevOps 中获取 keyvault secret 输出

.net - 获取 AzureRmResource : A parameter cannot be found that matches parameter name 'Tag'

asp.net - 在我的 Web 应用程序中尝试访问\\replace_with_server_name\PIPE\sql\query 是怎么回事?

c# - WebService客户端异常: Cannot Import wsdl:binding