我从WPF应用程序创建一个MailItem
并将其显示给用户:
Application _application = new Application();
MailItem mailItem = _outlook.CreateItem(OlItemType.olMailItem);
mailItem.Display(false);
用户点击发送后,MailItem
保存在数据库中(然后MailItem
与PK关联(:
_application.ItemSend += Application_ItemSend;
// ...
private void Application_ItemSend(object Item, ref bool Cancel)
{
MailItem mailItem = Item as MailItem;
// Save mailItem in db ...
}
之后,当MailItem
被复制到Outlook的已发送文件夹时,我需要找到它,并在数据库中标记为"已发送":
private static void TrackSentFolder(Data.Entity.Person person)
{
MAPIFolder sentFolder = _nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
// Find previously created MailItem ...
在我的研究中,我尝试了几种方法在已发送的文件夹中找到MailItem:
- 发送前使用
UserProperty
标记MailItem
- 发送前使用
PropertyAccessor
标记MailItem
- 将
MailItem
与PR_SEARCH_KEY
一起保存在数据库中
我觉得这很令人困惑。
是否有推荐的方法在已发送的文件夹中查找以前创建的MailItem
发送后没有推荐的识别项目的方法。选择哪种方法取决于您。你帖子中描述的每一种方法都可以使用。
请注意,如果设置了MailItem.DeleteAfterSubmit属性,则可以跳过Sent Items
文件夹。此外,MailItem.SaveSentMessageFolder属性允许设置Folder
对象,该对象表示发送电子邮件后将保存电子邮件副本的文件夹。