C#使用EWS创建日历项目,如何获取结果?

Dat*_*ase 6 c# exchange-server exchangewebservices ews-managed-api

我基于这个网站构建了一个应用程序http://msdn.microsoft.com/en-us/library/dd633661%28v=EXCHG.80%29.aspx

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("user1@contoso.com");
appointment.RequiredAttendees.Add("user2@contoso.com");
appointment.OptionalAttendees.Add("user3@contoso.com");
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
Run Code Online (Sandbox Code Playgroud)

我如何返回XML结果"... <t:ItemId Id ="AAMkADk ="ChangeKey ="DwAAAB"/> ..."所以我以后可以用它来删除或编辑日历项目!?!

微软在整个框架中做了一个上帝的工作,但他们真的忘记了这件小事吗?

我找到了一些(对我来说不合逻辑)解决方案 http://blogs.msdn.com/b/exchangedev/archive/2010/02/25/determining-the-id-of-a-sent-message-by-using- 我应该使用扩展属性与ews-managed-api.aspx来解决问题吗?

干杯

Ton*_*ony 7

我可能会忽略这一点,但在保存之后你可以预约.我认为这是这个约会的唯一ID.将其存储在某处,然后您可以再次访问约会进行编辑或删除:

Appointment appointment = Appointment.Bind(service, new ItemID("saved id value"));
Run Code Online (Sandbox Code Playgroud)

之后,您可以使用与最初设置它们相同的属性更改值,然后发出:

appointment.Update(ConflictResolutionMode.AlwaysOverwrite);
Run Code Online (Sandbox Code Playgroud)

或删除:

appointment.Delete(DeleteMode.HardDelete);
Run Code Online (Sandbox Code Playgroud)

您根本不必访问XML.

(nb到目前为止,我可以告诉您无法更新或删除公用文件夹日历中的约会,但您可以创建它们.)


bit*_*ise 5

看起来你找到的解决方案并没有返回XMl结果,而且很好.解决方案正在做的是将唯一标识符附加到电子邮件中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>
Run Code Online (Sandbox Code Playgroud)

请注意包含唯一标识符的XML标记.

<t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
Run Code Online (Sandbox Code Playgroud)