You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MS Graph restId转换为旧版Outlook HexEntryId格式?

解决MS Graph转换REST ID到HexEntryId的方法

由于MS Graph的translateExchangeIds接口不支持直接输出HexEntryId格式,你可以通过以下两种可行途径实现转换:

方法一:继续调用EWS的ConvertId接口

EWS的ConvertId接口支持将Graph的REST ID直接转换为HexEntryId,只需在请求中将源格式指定为RestId即可:

请求示例

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types"
                  xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
  <soapenv:Header>
    <typ:RequestServerVersion Version="Exchange2013_SP1"/>
  </soapenv:Header>
  <soapenv:Body>
    <mes:ConvertId DestinationFormat="HexEntryId">
      <mes:SourceIds>
        <typ:AlternateId Format="RestId" 
                         Id="AQMkADAwATNiZmYAZC1hNTUwLWQ0YjAtMDACLTAwCgBGAAAD8s5T9k040G6T4aL1c4w0hAEAAAAAAENAAAA=" 
                         Mailbox="timetelldev@timetell.nl"/>
      </mes:SourceIds>
    </mes:ConvertId>
  </soapenv:Body>
</soapenv:Envelope>

响应示例

接口会返回与你之前使用EWS转换时格式一致的HexEntryId:

<ResponseMessages>
  <ConvertIdResponseMessage ResponseClass="Success">
    <ResponseCode>NoError</ResponseCode>
    <AlternateId type="t:AlternateIdType" Format="HexEntryId" 
                 Id="00000000ABC72AACB341FF4F9886BAAC125E772807007591CF0335B23144ADC7FCD71BA6E2FC00000000010D00007591CF0335B23144ADC7FCD71BA6E2FC0002762AFE1F0000" 
                 Mailbox="timetelldev@timetell.nl"/>
  </ConvertIdResponseMessage>
</ResponseMessages>

方法二:手动格式转换

HexEntryId本质是EWS ID(或Graph REST ID)解码后的二进制数据转十六进制字符串。Graph的REST ID与EWS ID编码规则兼容,可通过以下步骤手动转换:

  1. 转换为标准Base64编码:如果Graph返回的REST ID是Base64URL格式(包含-或_),先将-替换为+、_替换为/,并补全末尾的=使字符串长度为4的倍数。
  2. 解码Base64为二进制数据:对标准Base64字符串进行解码,得到原始二进制数据。
  3. 二进制转十六进制字符串:将二进制数据转换为大写的十六进制字符串,即为HexEntryId。

代码示例(Python)

import base64

# 替换为你的Graph REST ID
graph_rest_id = "AQMkADAwATNiZmYAZC1hNTUwLWQ0YjAtMDACLTAwCgBGAAAD8s5T9k040G6T4aL1c4w0hAEAAAAAAENAAAA="

# 处理Base64URL格式(如果需要)
standard_base64 = graph_rest_id.replace('-', '+').replace('_', '/')
# 补全=号
padding = len(standard_base64) % 4
if padding != 0:
    standard_base64 += '=' * (4 - padding)

# 解码为二进制数据
binary_data = base64.b64decode(standard_base64)
# 转换为十六进制字符串(大写)
hex_entry_id = binary_data.hex().upper()

print(hex_entry_id)

内容的提问来源于stack exchange,提问作者Jan Doggen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:40:15