Exchange Online アカウント (Office なしの Office 365) のフォルダー間でメッセージを移動しようとしています。
これにより、メッセージの ItemId 値が変更される可能性があります (私の観察によると実際にそうです)。
MoveItem のドキュメントによると、新しい ItemId 値が返されるように要求する XML タグ ReturnNewItemIds があります。
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 を取得する方法がありますか?
私のテスト環境は、要求を含む XML ファイルと、適切な HTTP オプションを設定するシェル スクリプトを含む wget です。実行する必要があった他の EWS リクエストに問題はありません。