管理 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 间隔重复 n 次。可以使用不同的标签在约会内的 BEGIN:VALARM 与 END:VALARM 包括的脚本中创建这些触发器。约会的提醒设置有多种变体。

添加标签以设置提醒

以下代码片段演示了如何通过添加标签来设置提醒。

将预约 EML 转换为带 HTML 正文的 MSG

自 19.3 版起,Aspose.Email 提供将预约 EML 转换为 MSG 的功能,并保留预约的 HTML 正文。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 对象,指定组织者,并显式将其状态设置为 both MeetingReceived 使用 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);