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" /> ..." を使用して、後でカレンダー アイテムを削除または編集できます!?!

マイクロソフトはフレームワーク全体で素晴らしい仕事をしましたが、彼らは本当にこの小さなことを忘れていたのでしょうか?

私はいくつかの(私にとって論理的ではない)解決策を見つけました 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

私はポイントを逃している可能性がありますが、保存後にあなたはappointment.Idを取得することができます。これはこの予定の一意の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

あなたが見つけた解決策は、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 に答える