В настоящее время я работаю над проектом бывшего коллеги, который касается сохранения электронной почты с 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 ()
Я забыл о некоторых других вещах, которые я изучал, так как я смотрел на это в течение нескольких дней до выходных.