Outlook カレンダー アイテムの管理

Aspose.Email MapiCalendar クラスはカレンダーアイテムのさまざまなプロパティを設定するメソッドと属性を提供します。このセクションでは、以下のコードサンプルを示します:

カレンダーアイテムの作成と保存

以下のコードスニペットは、ICS 形式でカレンダー アイテムを作成および保存する方法を示します。

カレンダーアイテムを MSG ファイルとして保存

以下のコードスニペットは、カレンダー アイテムを MSG として保存する方法を示します。

MAPI カレンダーアイテムの製品 ID を ICS に保存

この ProductIdentifier プロパティ( MapiCalendarIcsSaveOptions クラスは、元の日付と時刻情報およびカスタム製品識別子を保持したまま、MAPI カレンダー アイテムを iCalendar (ICS) ファイルに保存するために使用されます。プロパティは、iCalendar オブジェクトを作成した製品の識別子を指定します。

以下のコードサンプルは、MAPI カレンダー オブジェクト内で iCalendar (ICS) データを操作する方法を示します:

var icsSaveOptions = new MapiCalendarIcsSaveOptions
{
    KeepOriginalDateTimeStamp = true,
    ProductIdentifier = "Foo Ltd"
};

mapiCalendar.Save("my.ics", icsSaveOptions);

イベントの総数を取得

CalendarReader クラスは、カレンダーイベントの取り扱いを容易にします。以下のプロパティとメソッドにより、複数のイベントを操作できます:

  • CalendarReader.Count - CalendarReader クラスの Count プロパティは、カレンダーに存在する Vevent コンポーネント(イベント)の数を取得でき、総イベント数の追跡が容易になります。
  • CalendarReader.IsMultiEvents - このプロパティは、カレンダーが複数のイベントを含むかどうかを判定します。カレンダーに複数のイベントがあるかどうかを示すブール値を提供し、単一イベントか複数イベントかの識別に役立ちます。
  • CalendarReader.Method - Method プロパティは、カレンダーオブジェクトに関連付けられた iCalendar のメソッドタイプを取得します。たとえば “REQUEST”、 “PUBLISH”、または “CANCEL” のようなメソッドタイプを返し、カレンダーの目的に関する有益な情報を提供します。
  • CalendarReader.Version - iCalendar のバージョンを取得します。
  • CalendarReader.LoadAsMultiple() このメソッドは、複数のイベントを含むカレンダーからイベントリストを読み込むことを可能にします。Appointment オブジェクトのリストを返し、各イベントに個別に簡単にアクセスおよび処理できます。

以下のコード例は、これらの機能をプロジェクトに実装する方法を示します。

var reader = new CalendarReader(fileName);
Console.WriteLine("Calendar contains " + reader.Count + " events");
Console.WriteLine("The Version of the calendar is " + reader.Version);
Console.WriteLine("The Method of the calendar is " + reader.Method);
Console.WriteLine("Is calendar contains contains multiple events? - " + reader.IsMultiEvents);
List<Appointment> appointments = reader.LoadAsMultiple();

表示リマインダーを追加

以下のコードスニペットは、カレンダーに表示リマインダーを追加する方法を示します。

音声リマインダーを追加

以下のコードスニペットは、カレンダーに音声リマインダーを追加する方法を示します。

カレンダー ファイルから添付ファイルを追加/取得

以下のコードスニペットは、カレンダー ファイルから添付ファイルを追加/取得する方法を示します。

会議出席依頼における受信者のステータスを確認

以下のコードスニペットは、会議出席依頼から受信者のステータスを表示する方法を示します。

標準タイムゾーンから MAPI カレンダータイムゾーンを作成

以下のコードスニペットは、標準タイムゾーンから MapiCalendarTimeZone を作成する方法を示します。

予定のリマインダーを設定

予定が作成されたときにリマインダーを追加できます。これらのアラームは、スケジュール開始 n 分前や、n 回の間隔で繰り返すなど、さまざまな条件でトリガーできます。BEGIN:VALARM と END:VALARM で囲まれたスクリプト内で、さまざまなタグを使用してこれらのトリガーを作成できます。予定にリマインダーを設定する方法には複数のバリエーションがあります。

リマインダー設定のためにタグを追加

以下のコードスニペットは、タグを追加してリマインダーを設定する方法を示します。

HTML 本文付きの Appointment EML を MSG に変換

バージョン 19.3 以降、Aspose.Email は、予定の HTML 本文を保持したまま Appointment EML を MSG に変換する機能を提供します。Aspose.Email は MapiConversionOptions.ForcedRtfBodyForAppointment プロパティはデフォルトで true です。値が MapiConversionOptions.ForcedRtfBodyForAppointment が true に設定されていると、予定の本文は RTF フォーマットに変換されます。HTML フォーマットで予定の本文形式を保持するには、次の値を設定します MapiConversionOptions.ForcedRtfBodyForAppointment を false に。

以下の例は次の使用法を示しています MapiConversionOptions.ForcedRtfBodyForAppointment HTML フォーマットで予定の本文形式を保持するプロパティです。

MAPI カレンダーアイテムの状態を手動で設定

MAPI カレンダーオブジェクトの状態を明示的に設定し、デフォルトの動作を上書きします。これにより、特に受信した会議リクエストを処理する際のカレンダーイベントの状態をより細かく制御できます。デフォルトでは、会議が作成されると、その状態は MapiCalendarState.Meeting。 受信者の受信トレイに届くと、自動的に次の状態に変わります MapiCalendarState.Received、メッセージクラスが “IPM.Schedule.Meeting.Request” に更新されます。使用すると SetStateForced 状態を手動で Received に設定でき、カレンダーを MSG ファイルとして保存する際にオーガナイザ情報を保持するのに役立ちます。ただし、これにより会議の適切な転送や再送信ができなくなる可能性があります。

以下のコードサンプルは、作成方法を示します。 MapiCalendar オブジェクトにオーガナイザを割り当て、状態を両方に明示的に設定します Meeting および Received 使用して SetStateForcedそれからカレンダーアイテムを .msg ファイルとして保存します。

MapiCalendar appointment = new MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Appointment",
    "This is a very important meeting :)",
    new DateTime(2024, 5, 10, 12, 30, 0, DateTimeKind.Utc),
    new DateTime(2024, 5, 10, 13, 30, 0, DateTimeKind.Utc));

appointment.Organizer = new MapiElectronicAddress
{
    EmailAddress = "test@aaa.com",
    DisplayName = "test display Name"
};

appointment.SetStateForced(MapiCalendarState.Meeting | MapiCalendarState.Received);

appointment.Save("appointment.msg", AppointmentSaveFormat.Msg);