【问题标题】:Outlook Interop: find mail in sent folderOutlook 互操作:在已发送文件夹中查找邮件
【发布时间】:2020-05-08 00:24:29
【问题描述】:

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

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

用户点击发送后,MailItem 被保存在 db 中(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 的已发送文件夹并在 db 中标记为“已发送”时找到它:

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

【问题讨论】:

    标签: c# outlook office-interop


    【解决方案1】:

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

    请注意,如果设置了 MailItem.DeleteAfterSubmit 属性,则可以跳过 Sent Items 文件夹。此外,MailItem.SaveSentMessageFolder 属性允许设置 Folder 对象,该对象表示发送后将保存电子邮件副本的文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多