【问题标题】:VBA to find email in outlook by Message-IDVBA 通过 Message-ID 在 Outlook 中查找电子邮件
【发布时间】:2019-08-09 04:22:29
【问题描述】:

我有一个访问数据库,它存储电子邮件的详细信息,包括发送日期、联系人、消息正文、entryid、conversationid 等,但根据我的研究,如果电子邮件被移动,entryid 会发生变化。好吧,由于它是共享邮箱,因此我们的电子邮件经常被移动。因此,我试图找到一种解决方案来搜索 Outlook 以获取不变的唯一 ID。我在这个论坛和其他论坛上找到的所有内容都指向消息 ID。我遇到的问题是获取您需要使用以下代码的消息ID:

.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001F")

它返回大量信息,而不仅仅是消息 ID。我遇到的另一个问题是我不确定在 Outlook 邮箱中搜索此消息 ID 的最佳方法。我唯一的选择是遍历所有电子邮件并获取它们的属性并提取消息 ID 并与我正在搜索的电子邮件进行比较吗?

【问题讨论】:

  • ActiveExplorer.Selection.Item(1).EntryID 来自链接 stackoverflow.com/questions/7710191/…>
  • EntryID 是唯一的,但不是永久的,因此不会起作用。如果您将电子邮件移动到其他文件夹,它会发生变化。

标签: vba search outlook


【解决方案1】:

首先,不需要检索整个邮件头。您可以只获取PR_INTERNET_MESSAGE_ID 属性值,DASL 名称为“http://schemas.microsoft.com/mapi/proptag/0x1035001E”。

该 Internet 消息 ID 属性仅在消息发送后发送。 Exchange 为存储中创建的所有消息设置该属性,但您不一定会在缓存存储中的消息上看到它。

' "PR_INTERNET_MESSAGE_ID"
propertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x1035001E")

注意,您可以将自己的 ID 分配给 Outlook 中的项目。例如,您可以将用户属性添加到具有您自己的 ID 的项目。有关更多信息,请参阅UserProperties.Add

【讨论】:

  • 哦,谢谢!通过此属性搜索特定消息的最佳/最有效的 vba 方法是什么。是执行 Advancesearch() 并将过滤器设置为此 dasl 名称,还是有一种更简洁的方法来搜索此 dasl 名称以返回邮件项?
猜你喜欢
  • 2021-12-29
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 2013-10-15
  • 2021-05-11
  • 1970-01-01
相关资源
最近更新 更多