【问题标题】:How do I uniquely match an outlook sent email to its corresponding outlook draft (MAPI MailItem)如何将 Outlook 发送的电子邮件与其相应的 Outlook 草稿(MAPI MailItem)唯一匹配
【发布时间】:2019-01-08 06:21:44
【问题描述】:

在草稿发送后,我正在尝试将 Outlook“草稿”与其对应的 Outlook“已发送电子邮件”进行匹配,但我似乎没有成功。

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

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

我深入研究了 MAPI 并找到了 PR_INTERNET_MESSAGE_ID_W,但草稿中不存在。

本质上(抱歉,漫无边际),我的问题是如何将 Outlook 草稿唯一标识到与其关联的已发送电子邮件(在草稿发送后)?

【问题讨论】:

    标签: email outlook outlook-addin mapi


    【解决方案1】:

    您可以使用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 格式发送。

    【讨论】:

    • 自己的命名属性正在工作!但我还有 1 个小的后续问题(我在中途拿起了这个项目)。按照文档:msdn.microsoft.com/en-us/vba/outlook-vba/articles/… 我正在设置这样的属性item.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/string/{00000000-0000-0000-0000-000000000000}/TestProperty", "TestValue"); 该架构中的十六进制数字是什么意思?
    • 您自己的 GUID。使用 OutlookSpy 查看消息(单击 IMessage 按钮)。另见dimastr.com/redemption/utils.htm#named-props
    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2021-08-08
    • 2022-07-15
    • 2014-09-03
    • 2010-11-30
    相关资源
    最近更新 更多