用于从Exchange二进制属性解析出MAPI属性的Java库?

用于从Exchange二进制属性解析出MAPI属性的Java库?,java,outlook,exchange-server,exchangewebservices,mapi,Java,Outlook,Exchange Server,Exchangewebservices,Mapi,我一直在使用EWS管理的Java API进行Exchange项目的一些工作 最近,我遇到了一个特殊的属性,它是一个格式化为二进制属性的RecipientRow,以字节数组的形式出现。我能够通过在数组中搜索特定的MAPI标记来选择它并找到必要的属性,但现在我不得不怀疑是否有一个免费的Java库可以用来简化这个过程 基本上,它只需要一些方便的方法/对象,围绕属性标签的大“映射”来为每个标签类型和其他属性(即0x1F000330是一个String属性,表示电子邮件地址,长度可变)。一个极端的例子是使用

我一直在使用EWS管理的Java API进行Exchange项目的一些工作

最近,我遇到了一个特殊的属性,它是一个格式化为二进制属性的
RecipientRow
,以字节数组的形式出现。我能够通过在数组中搜索特定的MAPI标记来选择它并找到必要的属性,但现在我不得不怀疑是否有一个免费的Java库可以用来简化这个过程

基本上,它只需要一些方便的方法/对象,围绕属性标签的大“映射”来为每个标签类型和其他属性(即
0x1F000330
是一个
String
属性,表示电子邮件地址,长度可变)。一个极端的例子是使用
ExportItems
函数将整个Exchange对象转储到一个base 64编码字符串中,然后对所有属性进行挑选。我想,任何设计用于与MAPI接口或解析Outlook数据的东西都需要这样做,但代码是否免费提供

我不是说从Exchange中打开任何二进制流。这在很大程度上是特定于EWS的,在EWS中会请求任何二进制数据
RecipientRow
使用此标记方法进行处理,拥有标记、类型和其他属性的映射可以让您区分
RecipientRow
并处理值

我假设
ExportItems
将遵循相同的格式,在标题信息和标志前加上前缀,然后提供一大块二进制数据,并带有标识其中特定值的标记。我可能会弄错,因为我还没有尝试使用
ExportItems
(它没有内置到EWS管理的API中,但Exchange支持它,因此我需要将其内置),所以我不能确定。但考虑到Microsoft用于多属性二进制值的结构,它在这种特殊情况下可能是有效的


当然,附件等需要以更通用的方式处理,但有关交换项目的信息(即约会的收件人、电子邮件正文等)应该可以访问。

您使用的是哪种特定的属性?大多数二进制属性格式都记录在MSDN.Any和all上。我已经阅读了大量的文档,我可以具体地分析出一些东西,但我正在寻找一个更通用的库,其中包含收集和构造的所有信息,比如说,你可以向它传递一个字节数组,它会给你一个映射,或者一个包装未打包属性的ExchangeObject,或者类似的东西,甚至可能与EWS Java结合,将所有属性放入一个新的ServiceObject子类中。这在理论上是不可能的-二进制属性没有通用格式,每个都是不同的。你需要知道blob格式才能解析它。我不是说像MFCMAPI那样挖掘现有的本地/远程Outlook收件箱。我更具体地研究了通过EWS检索的属性,主要是通过ExportItems方法,尽管其他以二进制格式返回多个数据片段的方法就足够了。如果您想在Outlook/Exchange/任何相关文件类型中分割任何可能的文件/格式/源,我可以认为这是一个非常棘手的问题,但我认为如果重点放在一种特定的格式或源上,这应该是可行的。再说一次,哪个属性?没有通用的格式。这就像说任何包含任意数据的数组都可以用通用的方式进行解析。您可以使用MP3文件数据、JPEG或完全自定义的内容。