如何将Exchange Web服务外部邮件标识映射到Exchange内部邮件标识

时间:2014-06-06 14:12:09

标签: exchange-server exchangewebservices exchange-server-2010

有一个自编写的应用程序(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?

1 个答案:

答案 0 :(得分:0)

我相信您希望使用EWS ConvertId operation或EWS托管API ConvertId method进行转换。这里有更多信息:Converting identifiers