Керування елементами календаря Outlook

Aspose.Email MapiCalendar Клас надає методи та атрибути для встановлення різних властивостей елементу календаря. У цьому розділі наведено приклади коду для:

Створити та зберегти елементи календаря

У наведеному фрагменті коду показано, як створити і зберегти елемент календаря у форматі ICS.

Зберегти елементи календаря як файли MSG

У наведеному фрагменті коду показано, як зберегти елемент календаря у форматі MSG.

Зберегти ідентифікатори продукту для елементів MAPI Calendar у форматі ICS

The ProductIdentifier властивість MapiCalendarIcsSaveOptions клас використовується для збереження елементу календаря MAPI у файл iCalendar (ICS), зберігаючи оригінальну дату і час, а також користувацький ідентифікатор продукту. Властивість вказує ідентифікатор продукту, який створив об’єкт iCalendar.

Наведений приклад коду показує, як працювати з даними iCalendar (ICS) у об’єкті MAPI календаря:

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

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

Отримати загальну кількість подій

Клас CalendarReader дозволяє легко працювати з подіями календаря. Наступні властивості та метод дозволяють працювати з кількома подіями:

  • CalendarReader.Count – Властивість Count класу CalendarReader дозволяє отримати кількість компонентів 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 Calendar зі стандартного часового поясу

Наведений фрагмент коду показує, як створити MapiCalendarTimeZone зі стандартного часового поясу.

Встановити нагадування для зустрічей

Нагадування можна додати під час створення зустрічі. Ці сигнали можуть спрацьовувати за різними критерями, наприклад, за n хвилин до початку розкладу, повторюватися n разів з інтервалом n. Різні теги можна використовувати для створення цих тригерів у скрипті, що знаходиться між BEGIN:VALARM і END:VALARM у межах зустрічі. Існує кілька варіантів, у яких можна встановити нагадування для зустрічі.

Додати теги для встановлення нагадувань

У наведеному фрагменті коду показано, як встановити нагадування, додаючи теги.

Конвертувати Appointment EML у MSG з HTML‑тілом

Починаючи з версії 19.3, Aspose.Email надає можливість конвертувати Appointment EML у MSG, зберігаючи HTML‑тіло зустрічі. Aspose.Email надає MapiConversionOptions.ForcedRtfBodyForAppointment властивості, яка має значення за замовчуванням true. Коли значення MapiConversionOptions.ForcedRtfBodyForAppointment встановлено на true, тіло зустрічі конвертується у формат RTF. Щоб зберегти формат тіла зустрічі у форматі HTML, встановіть значення MapiConversionOptions.ForcedRtfBodyForAppointment на false.

У наведеному прикладі демонструється використання MapiConversionOptions.ForcedRtfBodyForAppointment властивість, яка зберігає формат тіла зустрічі у форматі HTML.

Вручну встановити стан елементів MAPI Calendar

Встановити стан об’єкта MAPI Calendar явно, перевизначаючи поведінку за замовчуванням. Це дає кращий контроль над станами подій календаря, особливо при обробці отриманих запитів на зустріч. За замовчуванням, коли створюється зустріч, її стан — 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);