VBA按邮件ID在outlook中查找电子邮件

VBA按邮件ID在outlook中查找电子邮件,vba,search,outlook,Vba,Search,Outlook,我有一个access数据库,其中存储电子邮件的详细信息,包括发送日期、联系人、邮件正文、entryid、conversationid等,但根据我的研究,如果移动电子邮件,entryid会发生变化。因为是共享邮箱,我们的电子邮件经常被移动。因此,我试图找到一个解决方案,在outlook中搜索一个不变的唯一id。我在本论坛和其他论坛上找到的所有内容都指向消息ID。我遇到的问题是如何获得使用以下代码所需的消息ID: .PropertyAccessor.GetProperty("http://schem

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

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

这将返回大量信息,而不仅仅是邮件ID。我遇到的另一个问题是,我不确定在outlook邮箱中搜索此邮件ID的最佳方法。这是我唯一可以循环搜索所有电子邮件并获取其属性并提取邮件ID并与我搜索的邮件ID进行比较的方法吗?

首先总之,不需要检索整个消息头。您只需获取
PR\u INTERNET\u MESSAGE\u ID
属性值,DASL名称为“”

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

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

注意,您可以为Outlook中的项目分配自己的ID。例如,您可以使用自己的ID将用户属性添加到项目中。有关详细信息,请参阅

ActiveExplorer.Selection.Item(1).EntryID
from link EntryID是唯一的,但不是永久的,因此不起作用。如果你将邮件移动到其他文件夹,它就会改变。哦,谢谢!通过此属性搜索特定消息的最佳/最有效的vba方法是什么。是执行advancesearch()并将筛选器设置为此dasl名称,还是有更干净的方法搜索此dasl名称以返回邮件项?