27

私たちの要件の 1 つは、iCalendar ファイル (.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 Outlook に予定アイテムが作成されます。

ここで、何らかの理由で予定がキャンセルされた場合、User1 が ics ファイルを作成して User2 に送信し、User2 がローカル Outlook からイベントをキャンセルできるようにする必要があるとします。

そのようなicsファイルを作成する方法は?

4

4 に答える 4

27

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

招待状を送信した後にイベントを変更/キャンセルする場合は、そのイベント/予定をその UID で識別し、元の ics イベントよりも大きな SEQUENCE 番号を割り当てる必要があります。

UID (一意の識別子) : https://www.rfc-editor.org/rfc/rfc5545#page-117

シーケンス: https://www.rfc-editor.org/rfc/rfc5545#page-138

イベントステータスを設定します

             / "CANCELLED"    ;Indicates event was cancelled.

ステータス: https://www.rfc-editor.org/rfc/rfc5545#page-92

ああ - そしてメソッド イベントのキャンセルを送信する必要がある場合、UID は元のイベントと同じである必要があり、コンポーネントのプロパティはキャンセルするように設定する必要があります。メソッド:キャンセル ステータス:キャンセル済み

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

于 2012-05-12T07:03:24.220 に答える
7

任意のテキスト ファイル エディター (例: Visual Studio Code ) を使用して ics ファイル内のすべてのイベントを編集し、変更されたカレンダーを再度インポートします。

ここに画像の説明を入力

于 2020-03-03T10:45:28.960 に答える