如何尽快获得 Outlook 通讯组列表的成员?

How to get the members of an Outlook DistributionList as fast as possible?

我需要获取 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,但我只得到一个错误 "Unfortunately a problem occured. You can try again."(翻译自德语)。

我自己找的。

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

rec.AddressEntry.Members 包含列表的所有成员。

比那简单多了:

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