EWS 移动项目 - 检索新项目 ID



我正在尝试在Exchange Online帐户(即没有Office的Office 365)中的文件夹之间移动邮件。

这可能会(并且确实,根据我的观察)导致消息 ItemId 值更改。

根据 MoveItem 的文档,有一个 XML 标记 ReturnNewItemIds,用于返回新的 ItemId 值:

http://msdn.microsoft.com/en-us/library/exchange/aa564512(v=exchg.150).aspx

此标记记录为受 Exchange Online 支持:

http://msdn.microsoft.com/en-us/library/exchange/ff709497(v=exchg.150).aspx

当我在请求中包含此标签时,服务器始终返回HTTP状态代码500,内部服务器错误(如我所见,这意味着它不喜欢该请求)。

删除 ReturnNewItemIds 标记会使操作成功,但当然我不会获得新的 ItemId 值。

这是一个示例请求:

<?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:Body>
    <MoveItem
        xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
        <ToFolderId>
            <t:FolderId Id="...[snip]...AAUBzh5AAA="/>
        </ToFolderId>
        <ItemIds>
            <t:ItemId Id="...[snip]...da2BGjjDAAAUBziGAAA=" />
        </ItemIds>
        <ReturnNewItemIds>true</ReturnNewItemIds>
    </MoveItem>
  </soap:Body>
</soap:Envelope>

我尝试了不同的方法来指定 ReturnNewItemIds,大写 True,只包括标签......没有区别。不过,非常确定上面显示的方式是正确的 - 这是记录的内容,它还通过了 XML 架构验证。

有多种方法可以解决此问题以获取新的 ItemId 值,但它们需要额外的 EWS 操作,这既耗时又耗费流量。

有人遇到过这种情况吗?

这可能是在线交换的特定问题吗?也许文档对ExchangeOnline支持是错误的?

还是我错过了一些东西,有办法让 ReturnNewItemId 做它的事情?

我的测试环境是wget,其中包含包含请求的XML文件和设置正确HTTP选项的shell脚本。我需要执行的任何其他 EWS 请求都没有问题。

我可以重现您的问题。您缺少具有最低 RequestServerVersion.Version 的 SOAP 标头 Exchange2010_SP1。请添加以下 SOAP 标头,我希望这会起作用。

  <soap:Header>
    <t:RequestServerVersion Version="Exchange2010_SP1" />
  </soap:Header> 

问候,

迈克尔·迈纳〔Microsoft〕

最新更新