C#列出MS Exchange中的所有电子邮件地址

C#列出MS Exchange中的所有电子邮件地址,c#,active-directory,exchange-server-2010,C#,Active Directory,Exchange Server 2010,我需要从exchange/active directory获取所有电子邮件的列表。是否有像j。doe@domain.com或电子邮件组,如所有联系人或CEO,其中包括两个电子邮件地址。 这是我目前的代码: DirectoryEntry de = new DirectoryEntry(ad_path); DirectorySearcher ds = new DirectorySearcher(de); ds.Filter = "(&(objectClass=addressBookConta

我需要从exchange/active directory获取所有电子邮件的列表。
是否有像j。doe@domain.com或电子邮件组,如所有联系人或CEO,其中包括两个电子邮件地址。
这是我目前的代码:

DirectoryEntry de = new DirectoryEntry(ad_path);
DirectorySearcher ds = new DirectorySearcher(de);
ds.Filter = "(&(objectClass=addressBookContainer)(CN=All Global Address Lists,CN=Address Lists Container,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=local))";
SearchResultCollection ss = ds.FindAll(); // count = 0

您将无法从目录对象获取电子邮件地址,因为这些只是配置对象。如果要获取组织中的所有邮件地址,可以查询以下内容(请注意,默认情况下,结果大小有限):

如果要获取特定exchange地址列表的内容,可以修改筛选器并将其替换为该列表的“声称搜索”属性的值,例如:

(&(mailNickname=*)(|(objectClass=user)(objectClass=contact)(objectClass=msExchSystemMailbox)(objectClass=msExchDynamicDistributionList)(objectClass=group)(objectClass=publicFolder)))
这是“默认全局地址列表”的默认筛选器

您还可以枚举中的所有AddressBookContainer对象(CN=all Global Address List,CN=Address List Container,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=local) 对每个“声称的搜索”-属性执行查询

(&(mailNickname=*)(|(objectClass=user)(objectClass=contact)(objectClass=msExchSystemMailbox)(objectClass=msExchDynamicDistributionList)(objectClass=group)(objectClass=publicFolder)))