如何将 outlook 发送的电子邮件唯一匹配到其相应的 outlook 草稿 (MAPI MailItem)

How do I uniquely match an outlook sent email to its corresponding outlook draft (MAPI MailItem)

我试图在发送草稿后将展望 "draft" 与其相应的展望 "sent email" 相匹配,但我似乎没有任何进展。

我试过使用 ConversationId,这几乎奏效了。可以通过 ConversationId 将草稿与已发送的电子邮件匹配,但问题是用户可以创建 2 个不同的草稿,从而打破此逻辑(因为 2 个草稿将具有相同的 ConversationId,因此无法对已发送的电子邮件进行唯一标识。

我试过使用 EntryId 属性,但当然,草稿与发送的电子邮件不同。我已经尝试查看 parent EntryId 是否可以过滤掉任何内容,但这也不值得。

我深入研究了 MAPI,发现 PR_INTERNET_MESSAGE_ID_W 但草稿中不存在。

本质上(抱歉乱七八糟),我的问题是如何在其关联的已发送电子邮件中唯一标识 outlook 草稿(在草稿发送后)?

您可以使用 PR_SEARCH_KEY - 但它可以更改(请参阅 https://blogs.msdn.microsoft.com/stephen_griffin/2009/12/14/pr_search_key-and-draft-messages/)。 PR_RECORD_KEYPR_ENTRYID 在复制时会发生变化。

为什么不使用 MailItem.PropertyAccessor.SetProperty 设置您自己的命名 属性?只是不要使用 MailItem.UserProperties,因为这会导致邮件以 TNEF 格式发送。