有一个自编写的应用程序(c#)通过EWS(Webservice)与Exchange进行通信。 从EWS检索的每个邮件项都有一个base64编码的字符串作为邮件标识符。 该字符串是邮箱本身的GUID,一些标志和其他未知内容的串联。 正如在应用程序日志中观察到的那样,最后48位似乎代表了每个新邮件增加的序列号,因为base64表示也是如此。
这看起来如下
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dWAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dXAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dZAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dYAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1daAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dbAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1ddAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1deAAA=
^^^^^^^^
我的目的是解码base64表示并解释位部分,以便获得exchange的内部消息id。这对于简化邮件跟踪非常必要。
我面临的问题是,现在问题是我尝试解释这些位,我从来没有得到一个接近内部消息ID的值。
现在,交换中的内部消息ID位于 195XXXXXX ,但解释为long的二进制值会给出 713XXXXXX 附近的值,这完全没有意义。< / p>
为了使事情变得更糟,我观察到了序列的中断:
AAAqi1kKAAA=
AAAqi1kLAAA=
AAAqi1kMAAA= (decimal 713775372)
AAAqjUbTAAA= (decimal 713901779)
AAAqjUbUAAA=
AAAqjUbVAAA=
这意味着突然序列号增加了~126'400
我无法想象Exchange在EWS上下文中使用的内容与内部不同,并且在某处维护映射信息。
有没有人知道如何获得正确的消息ID?
答案 0 :(得分:0)
我相信您希望使用EWS ConvertId operation或EWS托管API ConvertId method进行转换。这里有更多信息:Converting identifiers。