2013-10-18 47 views
0

我試圖在Exchange Online帳戶(即沒有Office的Office 365)中的文件夾之間移動郵件。EWS MoveItem - 檢索新項目ID

這可以(並根據我的觀察)導致消息ItemId值發生變化。

根據對移動選項的文件,有一個XML標籤,ReturnNewItemIds將要返回的新項目Id值AKS:

http://msdn.microsoft.com/en-us/library/exchange/aa564512(v=exchg.150).aspx

由Exchange在線爲支持此標籤記載:

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,資金真,只包括標籤......沒什麼區別。可以肯定的是,上面顯示的方式是正確的 - 這是記錄的內容,它也通過了XML模式驗證。

我可以通過多種方法解決此問題以獲取新的ItemId值,但他們需要額外的EWS操作,這是時間和流量消耗。

有沒有人遇到過這個?

這可能是Exchange Online的特定問題嗎?有關ExchangeOnline支持的文檔可能是錯誤的?

或者我錯過了什麼,並有一種方法來獲取ReturnNewItemIds做它的事情?

我的測試環境是包含請求的XML文件和設置正確HTTP選項的shell腳本。與我需要執行的任何其他EWS請求沒有任何問題。

回答

2

我可以重現您的問題。您至少缺少RequestServerVersion.Version爲Exchange2010_SP1的SOAP頭。請添加以下SOAP頭,我期望這會起作用。

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

與問候,

邁克爾越來越重要的(微軟)

+0

謝謝邁克爾。它還要求源ItemId的格式爲EwsId(而不是EwsLegacyId格式)......但如果它們是,它就可以正常工作。 –