.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/

相关文章:

c# - 暂时阻止特定网站的编程方式?

vb.net - 如何围绕无边框表格绘制轮廓?

c# - 我可以在我托管的 PowerShell 中创建变量并启动我的类的方法吗?

c# - 数学题 : Determine the corner radius of an inner border based on outer corner radius/thickness

.net - 是否有像 Java 的 enum.ordinal() 这样的 .NET 构造?

vb.net - 在 VB 2008 中查找表单的实例

arrays - powershell arrays add-member - 寻找优雅的代码

python - 如何确保 Python 中的设置文件安全?

c# - 模拟锁定/挂起的应用程序

c# - 为什么 Amazon .Net SDK 看不到任何作业流?