С# EWS 2007 Адрес из пустого

Я работаю над приложением WinForms, которое использует EWS для чтения почты нашего сервера Exchange. Exchange находится в версии 2007. Я мог успешно читать, перемещать, удалять и отправлять электронные письма через EWS. Я использую автообнаружение для аутентификации и выбора почтового ящика. Единственная проблема в том, что я никогда не получаю адрес электронной почты отправителя. Единственное, что я получаю, это имя отправителя, но не адрес.

Это мой код до сих пор:

Service1 = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
Service1.Credentials = new WebCredentials(Properties.Settings.Default.Username, Properties.Settings.Default.Password);
Service1.Url = new Uri(Properties.Settings.Default.Serviceurl);
EmailMessage messageAtt = EmailMessage.Bind(Service1, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments, ItemSchema.HasAttachments, EmailMessageSchema.IsRead));
EmailMessage messageData = (EmailMessage)item;

foreach (Attachment attachment in messageAtt.Attachments)
{ 
    String from = messageData.Sender.Address.ToString();   
}

Вот что я получаю при отладке:

Скриншот

Может ли кто-нибудь дать мне предложение, что я здесь ошибаюсь? Есть ли проблема в том, что я написал, или это может быть проблема настройки сервера обмена?


person colosso    schedule 23.09.2013    source источник


Ответы (1)


Проблема, похоже, заключается в определении объекта EmailMessage:

При определении EmailMessage с явным преобразованием не все атрибуты передаются новому объекту. Если вы попробуете это с верхним объектом EmailMessage, который определяется методом .Bind(), это тоже не сработает. Причина, по которой это происходит, связана с тем, что PropertySet передается в качестве третьего параметра. Единственное решение, которое я нашел, - это создать третий объект:

EmailMessage messageInfo = EmailMessage.Bind(useService, item.Id);

Недостатком этого объекта является то, что вы не сможете увидеть, есть ли у элемента вложение или нет. Надеюсь, это поможет любому, кто не тратит время на такую ​​глупую ошибку;)

person colosso    schedule 25.09.2013