从交换服务器获取所有联系人

Get all contacts from exchange server

我想从 Exchange 服务器获取所有用户,我不想获取用户的联系人。事实上,我想让所有 AD 用户都成为我们无法连接到的 Active Directory。

     mExchangeService.ImpersonatedUserId = new ImpersonatedUserId
        {
            Id = "jack@aa.com",
            IdType = ConnectingIdType.SmtpAddress
        };
        var contacts = _mExchangeService.FindItems(new FolderId(WellKnownFolderName.Contacts),new ItemView(1000)); 

我可以通过上面的代码获取用户的联系方式,但我不想这样做,我想使用服务帐户获取所有 Exchange Web 服务用户。

您可以使用 EWS 通过 ExhangeService.ResolveName 检索您的目录用户。问题是 EWS 将 return 不超过 100 个用户,并且无法更改它或进行任何分页。因此,如果您在一家较大的公司工作,则无法使用 EWS 真正做到这一点。

代码:

var nameResolutionCollection = service.ResolveName("SMTP:",
    ResolveNameSearchLocation.DirectoryOnly, true);
foreach (var c in nameResolutionCollection)
{
    Console.WriteLine(c.Mailbox.Address);
}
Console.WriteLine(nameResolutionCollection.Count()); // Maximum 100 users.