1

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 リクエストに問題はありません。

4

1 に答える 1

2

問題を再現できます。Exchange2010_SP1 の最小 RequestServerVersion.Version を持つ SOAP ヘッダーがありません。次の SOAP ヘッダーを追加してください。これでうまくいくと思います。

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

よろしく、

マイケル・マイナー (マイクロソフト)

于 2013-10-24T19:19:42.547 に答える