2014-12-26 3 views
1

Я анализирую почтовый ящик пользователей Exchange с вызовами ExchangeService. Этот инструмент необходимо периодически запускать в клиентской среде и опускать учетные данные для службы, с которой я подключаюсь к службе Exchange, как зарегистрированный пользователь Windows. Я могу успешно перемещаться по папкам и элементам.ExchangeService: подключение без учетных данных, как получить информацию о пользователе?

Теперь я хочу, чтобы tot извлекал информацию о используемом почтовом ящике. Имя пользователя и (главное) E-mail должно быть достаточно. Но я не могу найти ничего о том, как получить эту информацию. Каждый пример предоставляет credentails для пользователя или автоматически обнаруживает службу Exchange из адреса электронной почты. Я не хочу, чтобы пользователь ничего настраивал :-).

Любые предложения?

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
service.Url = new Uri("https://FQDN/EWS/Exchange.asmx"); 
??? 
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.SentItems, new ItemView(100)); // this works 

Я попытался с помощью service.ResolveName, но это может дать несколько вариантов ответа, даже используя Environment.UserName

ответ

0

Самый простой способ сделать это состоит в использовании операции ConvertId и использовать неразрешимых адрес (мля @ blah.com всегда работает для меня) в элементе Mailbox. Exchange должен преобразовать это в фактический Почтовый ящик в ответе. например

 Folder chk = Folder.Bind(service, WellKnownFolderName.Inbox); 
     AlternateId aiItem = new AlternateId(); 
     aiItem.Mailbox = "[email protected]"; 
     aiItem.UniqueId = chk.Id.UniqueId; 
     aiItem.Format = IdFormat.EwsId; 
     String CasServer = service.Url.Host.ToString(); 
     AlternateIdBase caid = service.ConvertId(aiItem, IdFormat.HexEntryId); 
     Console.WriteLine(((AlternateId)caid).Mailbox); 

Приветствия Глен

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