Как определить отправителя электронного письма через веб-службы Exchange в C #? - PullRequest
4 голосов
/ 30 марта 2012

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

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

exchangeService.AutodiscoverUrl("user@domain.com");

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

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

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

1 Ответ

7 голосов
/ 30 марта 2012

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

По сути, вы можете получить незначительные детали, просто передав свой результат в 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);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...