【发布时间】:2014-06-06 14:12:09
【问题描述】:
有一个自行编写的应用程序 (c#) 通过 EWS(Web 服务)与 Exchange 进行通信。 从 EWS 检索到的每个邮件项目都有一个 base64 编码字符串作为邮件标识符。 该字符串是邮箱本身的 GUID、一些标志和其他未知内容的串联。 正如在应用程序日志中所观察到的,最后 48 位似乎代表了一个序列号,每个新邮件都会增加一个序列号,因为 base64 表示也是如此。
看起来像下面这样
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dWAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dXAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dZAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dYAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1daAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1dbAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1ddAAA=
AAMkADY4NGZiNmNmL[....]DruR5FpCowxZfCWAAAqi1deAAA=
^^^^^^^^
我的目的是解码 base64 表示并解释位部分,以便我获得交换的内部消息 ID。这对于简化邮件跟踪很有必要。
我面临的问题是,现在我尝试以哪种方式解释我从未得到接近内部消息 ID 的值的位。
目前交换的内部消息 ID 为 195XXXXXX,但解释为 long 的二进制值给出了一个大约 713XXXXXX 左右的值,这绝对没有意义。
更糟糕的是,我观察到了序列中的中断:
AAAqi1kKAAA=
AAAqi1kLAAA=
AAAqi1kMAAA= (decimal 713775372)
AAAqjUbTAAA= (decimal 713901779)
AAAqjUbUAAA=
AAAqjUbVAAA=
这意味着序列号突然增加了~126'400
我无法想象交换在 EWS 上下文中使用与内部不同的消息 ID,并且在某处维护映射信息。
有人知道如何获取正确的消息 ID 吗?
【问题讨论】:
标签: exchange-server exchangewebservices exchange-server-2010