2010-11-24 67 views
6

我建立一個基於這個網站的應用程序http://msdn.microsoft.com/en-us/library/dd633661%28v=EXCHG.80%29.aspxC#使用EWS創建日曆項目,如何找回結果?

appointment.Subject = "Status Meeting"; 
appointment.Body = "The purpose of this meeting is to discuss status."; 
appointment.Start = new DateTime(2009, 3, 1, 9, 0, 0); 
appointment.End = appointment.Start.AddHours(2); 
appointment.Location = "Conf Room"; 
appointment.RequiredAttendees.Add("[email protected]"); 
appointment.RequiredAttendees.Add("[email protected]"); 
appointment.OptionalAttendees.Add("[email protected]"); 
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy); 

我怎麼能返回XML結果 「...<噸:項目Id標識= 」AAMkADk =「 ChangeKey = 」DwAAAB「/> ...」所以稍後可以使用它來刪除或編輯日曆項目!?!

微軟在整個框架中做了上帝的工作,但他們真的忘了這個小東西嗎?

我發現了一些(對我來說不合邏輯)解決方案 http://blogs.msdn.com/b/exchangedev/archive/2010/02/25/determining-the-id-of-a-sent-message-by-using-extended-properties-with-the-ews-managed-api.aspx 我應該用這個來解決這個問題嗎?

歡呼

回答

5

看起來你發現沒有返回XML結果,PerSay的解決方案。該解決方案正在爲電子郵件附加一個唯一標識符ExtendedPropertyDefinition。然後,在發送完畢後,解決方案將搜索「已發送郵件」文件夾,以查找通過匹配發送電子郵件之前附加的唯一標識符剛剛發送的電子郵件的已保存副本。

然後作爲寫在博客,

以下是 通過調用FindItems在 上面的代碼示例生成的XML請求。

<m:FindItem Traversal="Shallow"> 
    <m:ItemShape> 
     <t:BaseShape>IdOnly</t:BaseShape> 
     <t:AdditionalProperties> 
     <t:FieldURI FieldURI="item:Subject" /> 
     <t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
     </t:AdditionalProperties> 
    </m:ItemShape> 
    <m:IndexedPageItemView MaxEntriesReturned="5" Offset="0" BasePoint="Beginning" /> 
    <m:Restriction> 
     <t:IsEqualTo> 
     <t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
     <t:FieldURIOrConstant> 
      <t:Constant Value="MyExtendedPropertyValue" /> 
     </t:FieldURIOrConstant> 
     </t:IsEqualTo> 
    </m:Restriction> 
    <m:ParentFolderIds> 
     <t:DistinguishedFolderId Id="sentitems" /> 
    </m:ParentFolderIds> 
</m:FindItem> 

注包含所述唯一標識符的XML標記。

<t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
+0

謝謝,所以它是正如我理解一些如何,所以我需要做什麼來獲得itemID和ChangeKey?之後我「保存」appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy); ? – 2010-11-28 15:59:31

7

我可能錯過了點,但後保存即可獲得appointment.Id我相信這是對這一任命的唯一ID。在一些地方保存,然後以後就可以進行編輯再次訪問預約或刪除與:

Appointment appointment = Appointment.Bind(service, new ItemID("saved id value")); 

後,您可以使用您用來設置它們原來相同的屬性,然後發出更改值

appointment.Update(ConflictResolutionMode.AlwaysOverwrite); 

或刪除:

appointment.Delete(DeleteMode.HardDelete); 

您不必在所有訪問XML。

(注:據我可以告訴你不能更新或公用文件夾日曆刪除約會,但您可以創建它們。)

0

另一種方式是你的動作之後加載對象。但正如之前所說,您可以使用Appointment.Id。