Как получить точное совпадение объекта addressEntry из GAL (Глобальный список адресов)

Я хочу найти объект addressEntry в глобальном списке адресов, используя приведенный ниже код на C#.

Microsoft.Office.Interop.Outlook.Application app = new Outlook.Application();
Outlook.AddressList gal = app.Session.GetGlobalAddressList();
Outlook.AddressEntry entry = gal.AddressEntries[name];

Но я получил 1-е подходящее имя, которое не правильно. Я хочу передать псевдоним или primarySMTPAddress(mailId) в качестве индекса, который является уникальным. Дайте мне метод для передачи уникального значения, чтобы получить точный объект addressEntry. Еще метод для извлечения всех соответствующих объектов addressEntry.

И вы можете предложить возможные параметры индекса для фрагмента ниже.

Outlook.AddressEntry entry = gal.AddressEntries[name];

1 ответ

Вам нужно перебрать все элементы, чтобы найти точное соответствие. Объектная модель Outlook не предоставляет никакого метода или свойства для этого.

Используя низкоуровневый код (Extended MAPI), как предположил Дмитрий, вы можете создать ограничение RES_PROPERTY для PR_ANR и вызвать IMAPITable::Restrict для таблицы содержимого соответствующего объекта IABContainer. Это то же ограничение, которое используется в Outlook, когда он разрешает имя в конкретном контейнере и отображает неоднозначный диалог имени.

Другие вопросы по тегам