我在StackOverflow上看到number of answers建议在VSTO中使用PR_SEARCH_KEY以这种方式获取Outlook.MailItem(以及可能是Outlook.Folder)的唯一标识符(对于Outlook 2007 - 2016):
Folder.PropertyAccessor.BinaryToString(Folder.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x300B0102");
但是,这会引发COMException(0x8004010F):
属性“http://schemas.microsoft.com/mapi/proptag/0x300B0102”是 未知或无法找到。
从下面的答案看来,这似乎无关紧要,但我尝试在网络浏览器中打开http://schemas.microsoft.com/mapi/proptag/0x300B0102,导致
您要查找的资源已被删除,名称已有 已更改,或暂时无法使用。
我应该使用不同的DASL属性标记吗?这些天有不同的方式获得PR_SEARCH_KEY吗?是否有替换PR_SEARCH_KEY的其他唯一标识符?
使用OutlookSpy查看文件夹,我看到以下内容 - 没有PR_SEARCH_KEY ......这是我第一次使用OutlookSpy,所以我无法判断这是否可疑。
答案 0 :(得分:1)
这不是URL,这是DASL属性标记。在您的情况下,DASL名称只是引用值为0x300B0102的MAPI属性标记
查看http://www.dimastr.com/redemption/utils.htm#xmapi以了解有关MAPI属性的信息。您可能还想使用OutlookSpy在Outlook中查看各种MAPI对象(单击IMAPIFolder,IMessage等)
话虽如此,我从来没有看到消息或文件夹中缺少该属性。如果单击IMAPIFolder,您是否在OutlookSpy中看到该文件夹的PR_SEARCH_KEY?它是什么类型的消息存储?