2015-01-21 2 views
1

Я хочу, чтобы все пользователи с сервера 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.

ответ

2

Вы можете использовать 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 записей –

+0

Спасибо вам за это Якоба! К сожалению, 100, когда этого недостаточно для нашей компании ActiveDirectory. Есть ли другой вариант, о котором вы знаете, или мне нужно пройти через [ActiveDirectory напрямую] (https://github.com/gheeres/node-activedirectory)? – Tholle

+1

@Tholle: Я думаю, что Active Directory - это путь. –

Смежные вопросы