【发布时间】:2013-10-27 18:00:37
【问题描述】:
我正在尝试在 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 请求都没有问题。
【问题讨论】:
标签: xml exchange-server exchangewebservices