这个编码是什么? (在Outlook / FileSite中找到)

问题描述 投票:0回答:2

我正在开发一个将插入iManage FileSite AddIn的Outlook VSTO Addin,我正在尝试访问当前选择的文件夹ID(在DMS中),我注意到CurrentFolder.EntryID属性包含一个非常大的十六进制string,转换为UTF-16时看起来像iManage的格式错误的ObjectID。见下文(一些信息被编辑):

�"�j���'`�W�vp441!nrtdms:0:!session:REDACTED:!database:TEC:!page:440:??!nrtdms:0:!session:REDACTED:!database:TEC:!publicpagescontainer??!nrtdms:0:!session:REDACTED:!database:TEC:??!nrtdms:0:!session:REDACTED:!explorercontainer??!nrtdms:0:!session:REDACTED:??!nrtmsg:neighborhood:??!nrtmsg:root:

我一直在研究一些正则表达式来将文件夹ID与字符串的其余部分分开,但我不禁想到有一种更稳定的方法。

有人有主意吗?

c# outlook-addin imanage worksite-sdk
2个回答
1
投票

ENTRYID标识符结构在MSDN中描述。消息存储和地址簿提供程序使用ENTRYID结构为其对象构造唯一标识符。

会员

  • abFlags - 提供描述对象的信息的标志的位掩码。只有标志的第一个字节abFlags [0]可以由提供者设置;其他三个是保留的。不得为永久条目标识符设置这些标志;它们仅用于短期条目标识符。对于客户端,此结构是只读的。可以在abFlags [0]中设置以下标志: MAPI_NOTRECIP - 条目标识符不能用作邮件的收件人。 MAPI_NOTRESERVED - 其他用户无法访问条目标识符。 MAPI_NOW - 条目标识符不能在其他时间使用。 MAPI_SHORTTERM - 条目标识符是短期的。除非启用了条目标识符的其他用法,否则必须设置此字节中的所有其他值。 MAPI_THISSESSION - 条目标识符不能用于其他会话。
  • ab - 表示服务提供商使用的二进制数据数组。客户端应用程序无法使用此阵列。

您可以使用PropertyAccessor.StringToBinary方法将字符串转换为二进制数据,该方法将Value指定的字符串转换为字节数组。有关使用PropertyAccessor对象时类型转换的更多信息,请参阅Best Practices for Getting and Setting Properties


0
投票

除了@Eugene Astafiev的回答之外,还记录了一些入门ID的格式。解析PST,Exchange和GAL入口ID非常容易。

MFCMAPIOutlookSpy查看入口ID。以下是OutlookSpy在缓存的Exchange存储中为消息PR_ENTRYID显示的内容(单击IMessage按钮,选择PR_ENTRYID属性):

abFlags[0]: 00
abFlags[1]: 00
abFlags[2]: 00
abFlags[3]: 00
muid: 5E81754F003E1549B0659F2AEA92E7C2 ({4F75815E-3E00-4915-B065-9F2AEA92E7C2})
Type: 0x0007 (eitLTPrivateMessage)
FolderDatabaseGUID: C7CF2304C77BF64585E8892DD6FF7BAC ({0423CFC7-7BC7-45F6-85E8-892DD6FF7BAC})
FolderGlobalCounter: 0xCAA69A1A0000
Pad1: 0x0000
MessageDatabaseGUID: 4A7CE85ED1AB274C9E20AA3CBFA828B1 ({5EE87C4A-ABD1-4C27-9E20-AA3CBFA828B1})
MessageGlobalCounter: 0x70A650D90100
Pad2: 0x0000
© www.soinside.com 2019 - 2024. All rights reserved.