Как мне получить членство (группы рассылки) контакта Outlook программно?

#outlook #microsoft-graph-api #exchange-server #com-interop #win32com

#outlook #microsoft-graph-api #exchange-сервер #com-interop #win32com

Вопрос:

Используя Office Outlook, мы можем найти вкладку «Членство«, когда мы щелкаем и разворачиваем контакт, на этой вкладке «Членство» отображается список электронных писем, на которые подписан пользователь.

Например, сотрудник X (x.x@zcompany.com / id123@zcompany.com ) в рамках Отдела данных Z Компания подписана на следующие группы рассылки:

  • datateam@zcompany.com
  • allemployeees@zcompany.com
  • dataweekly@zcompany.com
  • it.uk@zcompany.com
  • znewsletter@zcompany.com

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

Я нашел несколько потенциальных решений, но не знаю точно, как их реализовать:

  1. Outlook взаимодействует с GetMemberOfList() и GetExchangeDistributionList()
  2. Использование Microsoft Graph API
  3. Автоматизация VBA для Outlook
  4. Обратное проектирование с использованием ExchangePowershell
  5. Использование RPA для имитации действий пользователя в Outlook

Интересно, может ли кто-нибудь, имеющий опыт в этом, дать какой-нибудь совет? Заранее благодарю.

Ответ №1:

В ООМ вызовите Application.Session.CreateRecipient , Recipient.Resolve , Recipient.AddressEntry.GetExchangeUser() . ExchangeUser предоставляет GetMemberOfList() метод, который возвращает IAddressEntries объект.

Комментарии:

1. Привет, да, я тоже понял это вчера, но не с помощью приложения. Сессия, у меня это не сработало, namespace MAPI работал для меня. Спасибо за ваш ответ!

2. Application.Session будет равно нулю, если Outlook не был запущен до создания экземпляра Outlook.Application объекта. В этом случае Namespace объект поступает из Application.GetNamespace("MAPI") , и вам нужно позвонить Namespace.Logon .