ConvertId 操作

查找有关 ConvertId EWS 操作的信息。

ConvertId Exchange Web Services (EWS) 操作在Exchange Online接受的格式之间转换项目和文件夹标识符,Exchange Online作为Office 365的一部分,以及从 Exchange Server 2013 开始的 Exchange 本地版本。

使用 ConvertId 操作

可以使用 ConvertId 操作转换以下标识符:

  • Exchange 2007 初始发布版本中 EWS 的标识符格式。 这由 EwsLegacyIdIdFormat 枚举中的枚举值表示。

  • Exchange 2007 SP1 或 Exchange 2010 中 EWS 的标识符格式。 这由 EwsIdIdFormat 中的枚举值表示。

  • MAPI 标识符,如 PR_ENTRYID 属性中所示。 这由 EntryIdIdFormat 枚举中的枚举值表示。

  • 可用性日历事件标识符。 这是 PR_ENTRYID 属性的十六进制编码表示形式。 这由 HexEntryIdIdFormat 中的枚举值表示。

  • Exchange 存储标识符。 这由 StoreIdIdFormat 中的枚举值表示。 ConvertId 操作不会将公用文件夹标识符从 EWS 标识符转换为存储标识符。

  • Outlook Web App标识符。 这由 OwaIdIdFormat 中的枚举值表示

    不支持将从此标识符创建的 URL 传递到Outlook Web App。 Outlook Web App标识符适用于 Exchange 2007 和 Exchange 2010。 从 Exchange Server 2013 开始的 exchange Exchange Online 和版本的Outlook Web App使用 EWS 标识符。

在 Exchange Online 和 Exchange 2013 中将公用文件夹标识符从 EWS 标识符转换为存储标识符时,ConvertId 操作无法按预期工作。 可以手动更新作为解决方法返回的标识符。 若要手动更新标识符,请:

  1. 在应用程序代码中,确定目标项/文件夹是否位于公用文件夹中。

  2. 解码 Base64 编码的标识符字符串。

  3. 验证类型字节 (第 21 个字节) 的值是否为 7。 值为 7 表示标识符的格式不正确。

  4. 跳过前四个字节。 它们必须设置为零。

  5. 使用以下 GUID 更新接下来的 16 个字节:1A447390AA6611CD9BC800AA002FC45A

  6. 使用值 9 更新下一个字节 (类型字节) 。

  7. 将标识符更改为 Base64 编码的字符串。

注意

ConvertId 操作验证给定 SMTP 地址的格式是否有效。 该操作无法确定 SMTP 地址是否表示有效的邮箱。

ConvertId 操作可以使用下表中列出的 SOAP 标头。

表 1. ConvertId 操作 SOAP 标头

Header 元素 说明
模拟
ExchangeImpersonation
标识客户端应用程序正在模拟的用户。 这适用于请求。
RequestVersion
RequestServerVersion
标识操作请求的架构版本:此版本适用于请求。
ServerVersion
ServerVersionInfo
标识响应请求的服务器版本。 这适用于响应。

ConvertId 操作请求示例

以下 ConvertId 请求示例演示如何从 EWS 标识符转换为Outlook Web App标识符。

SOAP 标头中的 RequestServerVersion 元素必须设置为 Exchange2007_SP1 或更高版本才能使此操作正常工作。

注意

项目标识符已缩短,以保持可读性。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2010"/>
  </soap:Header>
  <soap:Body>
    <ConvertId xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
               DestinationFormat="OwaId">
      <SourceIds>
        <t:AlternateId Format="EwsId" Id="AAMkAGZhN2IxYTA0LWNiNzItN="
                       Mailbox="user1@example.com"/>
      </SourceIds>
    </ConvertId>
  </soap:Body>
</soap:Envelope>

ConvertId 操作响应示例

以下示例显示了对 ConvertId 请求的成功响应。 此响应示例包含Outlook Web App标识符。

注意

已缩短Outlook Web App标识符以保持可读性。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <t:ServerVersionInfo MajorVersion="8" MinorVersion="1" 
                         MajorBuildNumber="191" MinorBuildNumber="0" 
                         Version="Exchange2010" 
                         xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" />
  </soap:Header>
  <soap:Body>
    <ConvertIdResponse xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
      <ResponseMessages>
        <ConvertIdResponseMessage ResponseClass="Success">
          <ResponseCode>NoError</ResponseCode>
          <AlternateId xsi:type="t:AlternateIdType" Format="OwaId" Id="RgAAAAAS2%2" 
                         Mailbox="user@example.com" />
        </ConvertIdResponseMessage>
      </ResponseMessages>
    </ConvertIdResponse>
  </soap:Body>
</soap:Envelope>

ConvertId 操作错误响应示例

以下示例显示了对包含错误类型标识符格式的请求的响应。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <ServerVersionInfo MajorVersion="8" MinorVersion="1" 
                       MajorBuildNumber="206" MinorBuildNumber="0"
                       Version="Exchange2010" 
                       xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
  </soap:Header>
  <soap:Body>
    <ConvertIdResponse xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
      <ResponseMessages>
        <ConvertIdResponseMessage ResponseClass="Error">
          <MessageText>Id is malformed.</MessageText>
          <ResponseCode>ErrorInvalidIdMalformed</ResponseCode>
          <DescriptiveLinkKey>0</DescriptiveLinkKey>
        </ConvertIdResponseMessage>
      </ResponseMessages>
    </ConvertIdResponse>
  </soap:Body>
</soap:Envelope>

版本差异

EWS 标识符格式在 Exchange 2007 的初始版本和 Exchange 2007 Service Pack 1 (SP1) 之间更改。 从 Exchange 2010 开始,Exchange Online作为Office 365、Exchange Online和本地版本的 Exchange 的一部分使用 Exchange 2007 SP1 使用的相同标识符格式。

ConvertId 操作将公用文件夹标识符从 EWS 标识符转换为 Exchange 2007 和 Exchange 2010 中的存储标识符。

另请参阅