2012-03-29 1 views
4

В настоящее время я потянув письма от обмена почтового ящика, как так ...Как определить отправителя электронной почты через веб-службы Exchange на C#?

var exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1) 
{ 
    Credentials = new NetworkCredential("user", "password", "domain") 
}; 

exchangeService.AutodiscoverUrl("[email protected]"); 

var emails = exchangeService.FindItems(WellKnownFolderName.Inbox, new ItemView(5)); 

foreach (var email in emails) 
{ 
    //var senderEmail = email.??? 
} 

Объект электронной почты, кажется, не имеет какую-либо собственности для получения адреса электронной почты отправителя. Как мне это получить?

ответ

7

Вот несколько быстрых источников, которые я вытащил из примера рабочего проекта.

В принципе, вы можете получить второстепенные сведения, просто отправив свой результат в EmailMessage. Однако, если вы хотите получить более подробные сведения о отправителе (отображаемое имя и т. Д.), Вы должны сделать конкретное дополнительное требование (запрос веб-службы) к сообщению.

findResults = exchangeService.FindItems(folder.Id, messageFilter, view); 
      foreach (Item item in findResults) 
      { 
       if (item is EmailMessage) 
       { 
        EmailMessage message; 
        if (!toFromDetails) 
         message = (EmailMessage)item; 
        else 
         message = EmailMessage.Bind(exchangeService, item.Id); 

Как вы можете видеть в этом коде, у меня есть возможность выполнить дополнительную привязку, потому что это может занять некоторое время, и я часто имеем дело с тысячами результатов сотен почтовых ящиков. Иногда дополнительное время может не стоить того конкретного клиента.

+0

Гораздо полезнее, чем Google. Спасибо. – Carter