Как сохранить отправленное письмо сразу после отправки?
У меня есть отдельное приложение.Net из Outlook. Я хотел бы использовать Office.Interop (избегать redmeption.dll), чтобы отправить и сохранить отправленное письмо из этого приложения. Но когда я пытаюсь сохранить электронную почту после функции Send(), я получаю исключение: "Элемент был перемещен или удален".
Кажется, Outlook перемещен элемент электронной почты после отправки.
Итак, может ли кто-нибудь предложить мне лучшие способы, как сохранить "Отправленный" элемент электронной почты на диск?
Мне нужно, чтобы сохраненный файл MSG имел статус "отправлено". Таким образом, сохранение события Item_Send не работает для моего случая. Спасибо!
Вот мои коды
public bool SendAndSavAs(Outlook.Account emailAccount, string toEmailAddress)
{
Outlook.MailItem mailItem = null;
try
{
mailItem = OutlookApp.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
mailItem.Subject = "Test Subject";
mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatPlain;
mailItem.Body = "Test Body";
// Add recipient using display name, alias, or smtp address
mailItem.Recipients.Add(toEmailAddress);
mailItem.Recipients.ResolveAll();
mailItem.SendUsingAccount = emailAccount;
// send email
mailItem.Send();
// save the Sent mail to local disk (****but have exception occurs ****)
mailItem.SaveAs(@"c:\temp\test.msg");
return true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
ReleaseComObject(mailItem);
}
}
2 ответа
Вам нужно обработать событие ItemAdd на Sent Items
папка. В обработчике событий вы можете вызвать SaveAs
метод.
Также вы можете рассмотреть возможность использования свойства SaveSentMessageFolder класса MailItem, которое позволяет установить объект Folder, представляющий папку, в которую будет сохранена копия сообщения электронной почты после отправки.
После того, как вы позвоните "Отправить", единственное, что вы можете сделать с этим сообщением, - отпустить ссылку на него - теперь оно принадлежит поставщику транспортных услуг.
Также обратите внимание, что Send является асинхронным - сообщение отправляется, а его свойства, связанные с отправителем, заполняются только после его отправки. Первый шанс получить доступ к сообщению в этом состоянии - это когда Items.ItemAdd
событие запускает папку "Отправленные".