EWS MoveItem - 检索新项目ID

时间:2013-10-18 19:10:40

标签: xml exchange-server exchangewebservices

我正在尝试在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操作,这需要时间和流量。

有没有人碰到这个?

这可能是Exchange Online的特定问题吗?或许关于ExchangeOnline支持的文档是错误的?

或者我错过了什么,有办法让ReturnNewItemIds做它的事情吗?

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

1 个答案:

答案 0 :(得分:2)

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

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

关于,

Michael Mainer(微软)