C # создать элемент календаря с EWS, как вернуть результаты? - PullRequest
6 голосов
/ 24 ноября 2010

Я создаю приложение на основе этого сайта 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 "... ...", чтобы позже я мог использовать его для удаления или редактирования элемента календаря !? !

Microsoft сделала отличную работу со всей платформой, но они действительно забыли эту маленькую вещь?

Я нашел какое-то (не логичное для меня) решение 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 я должен использовать это, чтобы решить проблему?

ура

Ответы [ 3 ]

7 голосов
/ 07 января 2011

Я мог упустить момент, но после сохранения вы можете получить встречу. Идентификатор , который, я считаю, является уникальным идентификатором для этой встречи. Сохраните его где-нибудь, и позже вы сможете снова получить доступ к встрече для редактирования или удаления с помощью:

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

После этого вы можете изменить значения с теми же свойствами, которые вы использовали для их первоначальной установки, а затем выдать:

appointment.Update(ConflictResolutionMode.AlwaysOverwrite);

или удалить:

appointment.Delete(DeleteMode.HardDelete);

Вам вообще не нужен доступ к XML.

(нет. Насколько я могу судить, вы не можете обновлять или удалять встречи из календарей общих папок, хотя вы можете их создавать.)

5 голосов
/ 28 ноября 2010

Похоже, решение, которое вы нашли, не возвращает результаты XMl. Решение делает добавление уникального идентификатора в электронное письмо как ExtendedPropertyDefinition. Затем, после его отправки, решение выполняет поиск в папке «Отправленные», чтобы найти сохраненную копию только что отправленного электронного письма путем сопоставления с уникальным идентификатором, который был добавлен до отправки электронного письма.

Тогда, как написано в блоге,

Ниже приведен XML-запрос, который генерируется путем вызова FindItems в приведенный выше пример кода.

<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 голосов
/ 23 августа 2012

Другой способ - загрузить объект после вашего действия. Но, как уже было сказано, вы можете использовать Appointment.Id.

...