2010-11-24 73 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。