Как я могу получить доступ к MailItem после того, как он был отправлен? - PullRequest
0 голосов
/ 20 апреля 2020

Из моего приложения WPF я создаю и отображаю MailItem, как показано ниже:

using Microsoft.Office.Interop.Outlook;

Application outlook = new Application();
NameSpace ns = outlook.GetNamespace("MAPI");
MailItem mailItem = outlook.CreateItem(OlItemType.olMailItem);
mailItem.Display(false);
string lastEntryId = mailItem.EntryID; // remember EntryId

Теперь пользователь может создавать и отправлять почту.

После того, как пользователь отправил письмо он подтверждает отправку в моем приложении. Мое приложение должно сохранить почту в файловой системе. Мой подход состоял в том, чтобы «запомнить» MailItem.EntryID, чтобы использовать его после отправки.

// ... lastEntryId is null therefore this code doesn't work
MailItem mailItem = ns.GetItemFromID(lastEntryId);
string fileName = GetValidFileName(item.Subject) + ".msg";
string file = Path.Combine(GetSaveDirectory(), fileName);
item.SaveAs(file);

Но lastEntryId - это null перед отправкой, поэтому я не могу использовать его.

Вопрос : как я могу получить доступ к MailItem после его отправки?

1 Ответ

1 голос
/ 20 апреля 2020

Даже если у вас был идентификатор записи до отправки сообщения, он изменится, когда сообщение будет отправлено и перемещено в папку «Отправленные». Оно остается неизменным только в хранилище PST.

Items.ItemAdd событие в папке «Отправленные» - самое раннее доступное к отправленному сообщению.

Вы также можете использовать событие Application.ItemSend, если вам все равно, находится ли сообщение в отправленном состоянии или нет.

...