2010-12-14 2 views
3

Мне нужен способ определить, является ли папка Outlook общедоступной. Я подозреваю, что есть свойство Microsoft.Office.Interop.Outlook, которое позволит мне это сделать, но я не могу его найти.Как определить, является ли папка Outlook открытой?

+0

Папки Outlook, похоже, не имеют «общедоступных» свойств, но у них есть разрешения. Это то, что вам нужно? –

+2

Публичные папки - вещь обмена. Не уверен, что Outlook OM позволит вам получить к нему доступ. Я точно знаю, что EWS (Exchange Web Service) разрешает доступ к общим папкам. – RedDeckWins

ответ

0

Что вы хотите - это Exchange Web Service, в частности операция FindFolder (см. here или here для некоторых описаний MSDN).

Хотя, по внешнему виду, нет конкретного свойства, которое идентифицирует, является ли папка «общедоступной», например, упоминается @RedDeckWins.

UPDATE

Если конкретно не требуется использовать управляемый C# для этого, вы можете использовать Powershell Команды Exchange (проверить это here). В частности, эта команда может быть полезной:

Get-PublicFolder -Recurse | Format-List Name 

Powershell является довольно простым в использовании само по себе, но он также может быть вызвана из C#, если сервер ваш код работает на установил его (что, для самых современных коробки, должны).

Если вы ARE ограничено C#, посмотрите на этот StackOverflow вопрос: List of email address to public folders in exchange

+0

Я хочу перечислить папки и вытащить контакты, но только локальные, а не контакты на сервере обмена. Кажется странным, что я не могу найти хороший способ определить, являются ли контакты локальными или удаленными на сервере обмена, когда я перечисляю их. –

+0

См. Мое обновление. Вы ограничены ТОЛЬКО C#, или можете использовать Powershell? Инструменты, включенные в Exchange, могут очень сильно помочь здесь. – karlgrz

+0

@Greg: см. Обновление к моему ответу. Если вы хотите, чтобы папки «Контакты» находились внутри основного почтового ящика (* not * public), просто сравните их «StoreID's» или просто ограничьте свой поиск в местном магазине. –

1

Если вы можете получить на границе IMsgStore, связанный с папкой в ​​вопросе (извините, не знаю, как сделать это с чистый C# - рекомендую Redemption), вы можете запросить свойство PR_MDB_PROVIDER, чтобы узнать, pbExchangeProviderPublicGuid.

Update основан на ваш комментарий к ответу КГ в:

Если вы хотите, чтобы отфильтровать контакты, которые находятся внутри ваш основной почтовый ящик, просто сравнить их StoreID с этим из вашей папки входящих сообщений по умолчанию - или просто не» t перечислить папки из любых других магазинов для начала.

Смежные вопросы