6

我基于此站点构建了一个应用程序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);

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

微软把整个Framework搞得神乎其神,但他们真的忘记了这个小东西吗?

我找到了一些(对我来说不合逻辑)解决方案 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 我应该用它来解决问题吗?

干杯

4

3 回答 3

8

我可能会错过重点,但保存后您可以获得约会。我相信这是此约会的唯一 ID。将其存储在某处,然后您可以再次访问约会以进行编辑或删除:

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

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

appointment.Update(ConflictResolutionMode.AlwaysOverwrite);

或删除:

appointment.Delete(DeleteMode.HardDelete);

您根本不必访问 XML。

(nb 据我所知,您无法从公用文件夹日历中更新或删除约会,尽管您可以创建它们。)

于 2011-01-06T22:55:59.767 回答
5

persay,您找到的解决方案似乎没有返回 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>

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

<t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
于 2010-11-28T02:28:06.973 回答
0

另一种方法是在您执行操作后加载对象。但正如之前所说,您可以使用 Appointment.Id。

于 2012-08-23T12:11:18.257 回答