我正在尝试在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请求没有任何问题。
答案 0 :(得分:2)
我可以重现您的问题。您缺少具有Exchange2010_SP1的最小RequestServerVersion.Version的SOAP标头。请添加以下SOAP标头,我希望这会起作用。
<soap:Header>
<t:RequestServerVersion Version="Exchange2010_SP1" />
</soap:Header>
关于,
Michael Mainer(微软)