2012-05-11 21 views
6

私たちの要件の1つは、iCalendarファイル(.ics)を作成し、電子メールで添付ファイルとして送信することです。私たちは、下のようICSファイルを作成するために、DDay.Ical.dllを使用している:icsファイルを使用してカレンダーイベントをキャンセルするにはどうすればよいですか?

// Create a new iCalendar 
iCalendar iCal = new iCalendar(); 

// Create the event, and add it to the iCalendar 
Event evt = iCal.Create<Event>(); 

// Set information about the event 
evt.Start = new iCalDateTime(SomeStartTime); 
evt.End = new iCalDateTime(SomeEndTime); 
evt.Location = "At so and so place"; 
evt.Description = "Some Description"; 
evt.Summary = "About Some Subject"; 
iCal.Method = "PUBLISH"; 

// Serialize (save) the iCalendar 
iCalendarSerializer serializer = new iCalendarSerializer(); 
serializer.Serialize(iCal, @"iCalendar.ics"); 

完全なプロセスは、次のとおりです。

  1. User1は、特定の日付と時刻のためのiCalファイルを作成するとUser2に送信します。
  2. User2がicsファイルを開き、招待を受け入れます。予定項目はUser2のLOCAL見通しで作成されます。

ここで、予定がキャンセルされた場合、User1はicsファイルを作成してUser2に送信し、User2はローカル見通しからイベントをキャンセルできるとします。

icsファイルの作成方法は?

答えて

10

ファイルは元のicsファイルと同じ方法で作成されます。イベントのステータスは異なります。 UIDはイベントを識別し、シーケンス番号は更新の優先順位を示し、イベントの詳細が記録されます(変更またはキャンセル)

招待状を送信した後にイベントを変更またはキャンセルするには、そのUIDによるイベント/予約、および元のicsイベントよりも大きなSEQUENCE番号の割り当てを行います。

UID(一意の識別子):http://tools.ietf.org/html/rfc5545#page-117

シーケンス:http://tools.ietf.org/html/rfc5545#page-138

やイベントのステータスを設定

  /"CANCELLED" ;Indicates event was cancelled. 

ステータス:ああhttp://tools.ietf.org/html/rfc5545#page-92

- と方法 あなたがする必要がある場合UIDは元のものと同じにする必要がありますイベントのキャンセルで送信コンポーネントプロパティは、キャンセルするように設定する必要があります。 方法:キャンセル ステータス:キャンセル

もちろん、受信者が最初に同じカレンダーアプリにロード/サブスクライブするために実際にクリックすると、イベントは「キャンセル」されます。 リモートicsを「購読している」アプリケーションの場合、次に「更新」チェックを行うときに更新を処理し、元のイベントを上書きする必要があります。

+1

私はoutlookクライアントからこれをテストしていました。驚くべきことに、Outlookから会議をキャンセルし、受信者側のICSファイルを読むと、キャンセルされただけでSTATUSフラグが見つかりませんでした。また、VEVENTはCANCELに設定されていますが、会議がキャンセルされたかどうかを示す十分な表示であるかどうかはわかりません。これがキャンセルされた会議であるかどうかを知るために受信側で確認できる他のものを教えてください。私はいくつかのワークフローのためにそれが必要です! – k2ibegin

関連する問題