EWS Прикрепленные электронные письма пропускают свойство DatatimeReceived после .Load () - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время я работаю над проектом бывшего коллеги, который касается сохранения электронной почты с Exchange в нашу систему ERP.

Но я столкнулся со странной проблемой. Иногда, когда система получает электронное письмо, оно содержит электронное письмо в виде вложения. Выдает ошибку, потому что дата DataTimeReceived не установлена. Даже после .Load ();

 private int HandleEmail(Item item, Folder moveToFolder, Folder moveToFailedFolder, Mailbox mailbox, int fatherId = 0, string uploaderEmail = "", bool isEmbeddedMail = false)

Как это работает. является то, что метод HandleEmail () проходит через исходное письмо, пока не получит проверку if. Если вложение не является FileAttachment, а является ItemAttachment. Следующий код называется.

else if (attachment is ItemAttachment)
{
 var itemAttachment = attachment as ItemAttachment;
 itemAttachment.Load(new PropertySet(ItemSchema.Attachments, ItemSchema.TextBody, EmailMessageSchema.Sender, EmailMessageSchema.DisplayCc, EmailMessageSchema.DateTimeReceived, EmailMessageSchema.From, ItemSchema.MimeContent, ItemSchema.Body, ItemSchema.TextBody, EmailMessageSchema.BccRecipients, ItemSchema.Attachments));
  var item_ = itemAttachment.Item;

 HandleEmail(item_, null, null, mailbox, (int)mailid, uploaderEmail, true); // The attached email is then looped through like it is an regular email instead of like an image.
}

В этой проверке. Он берет вложение элемента и загружает дополнительный набор свойств, который содержит некоторые необходимые данные. Наконец, метод вызывает его сам, но теперь с вложением элемента, чтобы читать его как обычное электронное письмо. Моя проблема заключается в том, что некоторые вложенные электронные письма не имеют установленного свойства DatetimeReceived. Вместо этого эта ошибка отображается на своем месте.

Microsoft.Exchange.Webservice.Data.ServicesObjectPropertyException

И это сообщение об отказе выбрасывается

You must load or assign this property before you can read its value

И я не могу понять, почему это происходит только с некоторыми прикрепленными письмами. Когда я сам смотрю на электронные письма, у них есть дата получения. Но по какой-то причине я не могу получить его с помощью .Load ()

Я пробовал несколько вещей, таких как использование .Load как для Item, так и для ItemAttachment, но оба не получили ничего стоящего. Попытался изучить использование service.loadpropertiesforitems () Я забыл о некоторых других вещах, которые я изучал, так как я смотрел на это в течение нескольких дней до выходных.

1 Ответ

0 голосов
/ 02 мая 2018

Два предложения, которые я хотел бы получить, это сначала попробовать EmailMessageSchema.DateTimeSent (который должен совпадать с DateTimeReceived), разница может быть вызвана при присоединении отправленных сообщений. Другой способ - включить трассировку и взглянуть на трассировки, чтобы увидеть, что на самом деле возвращается с сервера; возможно, просто попробуйте загрузить BasePropertySet.FirstClassProperties, а не свой пользовательский набор (просто для проверки этого свойства в любом случае)

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