从Exchange服务器获取所有联系人

时间:2015-01-21 00:43:05

标签: exchange-server exchangewebservices

我想从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服务用户。

1 个答案:

答案 0 :(得分:3)

您可以使用EWS使用ExhangeService.ResolveName检索目录用户。问题是EWS将返回不超过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.