Outlook Interop:在已发送文件夹中查找邮件

Outlook Interop: find mail in sent folder

我从 WPF 应用创建 MailItem 并将其显示给用户:

Application _application = new Application();
MailItem mailItem = _outlook.CreateItem(OlItemType.olMailItem);
mailItem.Display(false);

用户点击发送后,MailItem保存在数据库中(MailItem然后与主键相关联):

_application.ItemSend += Application_ItemSend;
// ...
private void Application_ItemSend(object Item, ref bool Cancel)
{
    MailItem mailItem = Item as MailItem;
    // Save mailItem in db ...
}

之后我需要找到 MailItem 当它被复制到 Outlook 的发送文件夹并在数据库中标记为 'sent':

private static void TrackSentFolder(Data.Entity.Person person)
{
    MAPIFolder sentFolder = _nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
    // Find previously created MailItem ...

在我的研究中,我尝试了几种在已发送文件夹中查找 MailItem 的方法:

  1. 发送前使用UserProperty标记MailItem
  2. 发送前使用PropertyAccessor标记MailItem
  3. MailItemPR_SEARCH_KEY 一起保存在数据库中

我觉得这很混乱。

是否有推荐的方法可以在已发送文件夹中找到以前创建的 MailItem

没有推荐的在发送后识别项目的方法。选择哪种方式取决于您。您 post 中描述的每个方法都可以使用。

请注意,如果 MailItem.DeleteAfterSubmit property is set. Also the MailItem.SaveSentMessageFolder 属性 允许设置代表电子邮件副本所在文件夹的 Folder 对象,则可以跳过 Sent Items 文件夹消息发送后将被保存。