В системе, с которой я работаю, есть требование, чтобы MimeContent
только что отправленного электронного письма сохранялось в локальной базе данных.Насколько я понимаю, как работает Exchange, я создаю MimeContent
на сервере, и я не могу получить к нему доступ, пока не запросю у службы только что отправленное сообщение.
Итак, я предпринимаю следующие шаги:
- Отправьте электронное письмо и получите его Id
message.SendAndSaveCopy();
return message.Id.UniqueId;
- Используйте новый идентификатор, чтобы получить только что отправленного EmailMessage
ExchangeService exchangeService = ExchangeService;
var properties = new List<PropertyDefinitionBase>
{
ItemSchema.MimeContent
};
EmailMessage message = EmailMessage.Bind(exchangeService, new ItemId(messageId), new PropertySet(BasePropertySet.IdOnly, properties));
Когдаэтот код работает без перерыва, он работает.Возвращенный Id
все еще действителен (возможно, сообщение находится в папке «Исходящие»), и я получаю результат.Однако, если я замедляю его даже на секунду, идентификатор больше не действителен (я думаю, он теперь перемещен в отправленную папку).
Я не могу оставить его таким, так как нет гарантии, что я получувернуться на сервер вовремя, чтобы получить сообщение с этим Id
.
. Если есть решение, при котором мне не нужно снова запрашивать службу для сообщения, это было бы здорово.Однако, если нет, могу ли я использовать Id
и ChangeKey
для получения только что отправленного электронного письма?