Библиотека погашения Outlook - доступ к общим почтовым ящикам / определенным папкам с помощью учетной записи службы - PullRequest
1 голос
/ 02 марта 2012

Я конвертирую существующий кусок кода, используя Redemption (библиотека MS Exchange) для работы под учетной записью службы.У меня проблема в том, что я не могу искать почтовые папки, как раньше.

Первое препятствие при переходе на служебную учетную запись было преодолено переключением

_rdoSession.Logon() // <- Which uses the account’s MAPI profile, and throws an exception under a service account 

To:

_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 

НекоторыеПоиск в Google показал, что первым шагом является использование:

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

Я убедился, что это возвращает правильный объект общего почтового ящика.

Однако - оттуда нет методов поиска.Я могу попытать счастья в создании нового кода для навигации по структуре папок из свойства .RootFolder , но это похоже на хак.

Как мне обращаться к определенным папкам вобщий почтовый ящик, запускаемый под учетной записью службы в «Погашение»?

1 Ответ

2 голосов
/ 02 марта 2012

Вы можете использовать

store = _session.Stores.GetSharedMailbox («Пример общего почтового ящика»);

folder = store.IPMRootFolder.Folders.Item («Входящие»). Папки.Item ("FolderTwo");

или

store = _session.Stores.GetSharedMailbox ("Пример общего почтового ящика");

folder = store.GetDefaultFolder (olFolderInbox).Folders.Item ( "FOLDERTWO");

...