Outlook Redemption库 - 使用服务帐户访问共享邮箱/特定文件夹

时间:2012-03-01 23:27:22

标签: c# exchange-server outlook-redemption

我正在使用Redemption(MS Exchange库)转换现有代码片段以在服务帐户下运行。我遇到的问题是我无法像以前那样查找邮件文件夹。

通过切换

克服了迁移到服务帐户的第一个障碍
_rdoSession.Logon() // <- Which uses the account’s MAPI profile, and throws an exception under a service account 

致:

_rdoSession.LogonExchangeMailbox("", "mailserver.example.com"); 

尝试访问特定文件夹时出现问题。以前我能够使用:

_session.GetFolderFromPath("\\\\Mailbox - Example shared mailbox\\Inbox\\FolderOne"); 
_session.GetFolderFromPath("\\\\Mailbox - Example shared mailbox\\Inbox\\FolderTwo"); 

在服务帐户下,我无法使用相同的语法处理共享邮件帐户,因为我收到错误:

Could not open store "Mailbox – Example shared mailbox": Error in IMAPITable.FindRow: MAPI_E_NOT_FOUND 

一些谷歌搜索显示开始步骤是使用:

_session.Stores.GetSharedMailbox("Example shared mailbox ")

我已经验证这会返回正确的共享邮箱对象。

然而 - 从那里,没有搜索方法。我可以尝试构建新代码以从 .RootFolder 属性导航文件夹结构,但这看起来像是一个黑客。

我应该如何访问共享邮箱中的特定文件夹,在Redemption中的服务帐户下运行?

1 个答案:

答案 0 :(得分:2)

您可以使用

store = _session.Stores.GetSharedMailbox(“示例共享邮箱”);

folder = store.IPMRootFolder.Folders.Item(“Inbox”)。Folders.Item(“FolderTwo”);

store = _session.Stores.GetSharedMailbox(“示例共享邮箱”);

folder = store.GetDefaultFolder(olFolderInbox).Folders.Item(“FolderTwo”);