发送后如何访问 MailItem?
How can I access a MailItem after it has been sent?
在我的 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
用户现在可以撰写和发送邮件。
用户发送邮件后,他在我的应用程序中确认发送。然后我的应用程序应该将邮件保存在文件系统中。我的方法是 "remember" 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 发送后如何访问?
即使您在邮件发送前拥有条目 ID,当邮件发送并移至“已发送邮件”文件夹时,它也会发生变化。它仅在 PST 存储下保持不变。
Items.ItemAdd 已发送邮件文件夹中的事件是您最早可以访问已发送邮件的事件。
如果不关心消息是否处于已发送状态,也可以使用Application.ItemSend事件
在我的 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
用户现在可以撰写和发送邮件。
用户发送邮件后,他在我的应用程序中确认发送。然后我的应用程序应该将邮件保存在文件系统中。我的方法是 "remember" 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 发送后如何访问?
即使您在邮件发送前拥有条目 ID,当邮件发送并移至“已发送邮件”文件夹时,它也会发生变化。它仅在 PST 存储下保持不变。
Items.ItemAdd 已发送邮件文件夹中的事件是您最早可以访问已发送邮件的事件。
如果不关心消息是否处于已发送状态,也可以使用Application.ItemSend事件