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

问题描述:

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

 mExchangeService.ImpersonatedUserId = new ImpersonatedUserId 
     { 
      Id = "[email protected]", 
      IdType = ConnectingIdType.SmtpAddress 
     }; 
     var contacts = _mExchangeService.FindItems(new FolderId(WellKnownFolderName.Contacts),new ItemView(1000)); 

我可以在上面的代码来获得用户的接触,但是这不是我想要的,我想用一个服务帐户来获取所有的Exchange Web服务的用户。

您可以使用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. 
+0

谢谢,我知道这个方法,只是可以得到100条记录,这很奇怪,为什么只提供100个记录 – 2015-02-12 01:21:07

+0

感谢你为这个雅各布!可悲的是,100对于我们公司的ActiveDirectory来说还不够。有没有其他的选择,或者我必须直接通过[ActiveDirectory](https://github.com/gheeres/node-activedirectory)? – Tholle 2015-09-22 19:37:00

+1

@Tholle:我认为Active Directory是最好的选择。 – 2015-09-24 07:38:54