无法在Outlook加载项/ OutlookSpy解码十六进制值中创建StorageItem

时间:2017-04-12 13:09:05

标签: c# outlook outlook-addin

我遇到与this帖子中提到的完全相同的问题。

用户@Dmitry Streblechenko给出了答案:

  

使用PropertyAccessor.GetProperty读取PR_MDB_PROVIDER属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x34140102)。返回的16字节数组将特定于每种商店类型。例如。对于Exchange存储,它将是pbExchangeProviderPrimaryUserGuid(5494A1C0297F101BA58708002B2A2517)。使用OutlookSpy(单击IMessage,IMAPIFolder或IMsgStore)查看相关商店中的任何对象,以查看PR_MDB_PROVIDER属性。

  1. 问题:链接已关闭。

  2. 问题:我完全不知道在哪里可以找到有关hexdumps的文档。

  3. 例如,我在PR_MDB_PROVIDER属性上有以下值:

    • 财产:PR_MDB_PROVIDER
    • 输入:PT_BINARY
    • 价值:cb:16, lpb: 54 94 A1 C0 29 7F 10 1B A5 87 08 00 2B 2A 25 17

    我该如何处理hexdump?这方面的文件在哪里?

    mentioned帖子中的用户有以下hexdump

      

    cb:16,lpb:E9 2F EB 75 96 50 44 86 83 B8 7D E5 22 AA 49 48

    而@Dmitry Streblechenko告诉他这意味着:

      

    它是Outlook 2013中的IMAP4提供程序

    这些信息来自哪里?这些数字对我没有任何意义。

    我的问题是,values中的hexdump是什么意思?或OutlookSpy的开发者是唯一可以帮助我的人吗? 我找不到任何文件..

    非常感谢

1 个答案:

答案 0 :(得分:1)

"http://schemas.microsoft.com/mapi/proptag/0x34140102"不是链接,而是您需要传递给GetProperty的DASL属性名称。

PR_MDB_PROVIDER属性的某些值被记录(例如PST,Exchange邮箱,委托,公共文件夹),其他(如IMAP4)不是,但它们永远不会改变 - 它只是一些硬编码的随机值(GUID)被拾取时开发了特定的商店提供商。它之后永远不会改变。

使用PropertyAccessor检索属性(您将获得一个字节数组)并将其与您的硬编码值进行比较,以确定商店的类型。如果使用Redemption是一个选项,它会为您执行此操作并公开RDOStoreStoreKind属性:

skUnknown = 0;
skPstAnsi = 1;
skPstUnicode = 2;
skPrimaryExchangeMailbox = 3;
skDelegateExchangeMailbox = 4;
skPublicFolders = 5
skBCM = 6
skIMAP4 = 7
skHotmail = 8
skEAS = 9