Как получить членов Outlook DistributionList как можно быстрее? - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно получить адреса электронной почты членов списка рассылки Outlook. Этот список не находится в моей локальной папке, это список всей компании.

У меня есть решение, но оно требует значительного времени, потому что я перебираю все существующие группы (8 400+), чтобы найти нужную группу, прежде чем обращаться с членами этой группы.

Есть ли лучший способ получить членов списка рассылки, если я уже знаю его имя (нет необходимости также получать все остальные списки рассылки более 8 400)?

Вот мой код:

outlookApp = New Outlook.Application
outlookNamespace = _outlookApp.GetNamespace("mapi")

Dim addrLists As Outlook.AddressLists =
    outlookApp.Session.AddressLists
Dim root As Outlook.AddressList =
    addrLists.OfType(Of Outlook.AddressList) _
             .FirstOrDefault(Function(x) x.Name = "All Groups")
Dim entry As Outlook.AddressEntry =
    root.AddressEntries.Cast(Of Outlook.AddressEntry) _
                       .FirstOrDefault(Function(x) x.Name = "<Enter Group Name Here>")

entry.Members содержит всех членов этого списка.


Я пытался использовать функцию GetAddressEntryFromID, но получаю только сообщение об ошибке «К сожалению, возникла проблема. Вы можете попробовать еще раз». (перевод с немецкого).

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Это намного проще, чем:

set allGroups = Application.Session.AddressLists.Item("All Groups")
set addressEntry = allGroups.AddressEntries.Item("<Enter Group Name Here>")
for each m in addressEntry.Members
  MsgBox m.Name
next
0 голосов
/ 17 мая 2019

Я нашел это сам.

Dim rec As Outlook.Recipient =
    outlookNamespace.CreateRecipient("<Enter Group Name Here>")
rec.Resolve

rec.AddressEntry.Members содержит всех членов списка.

...