Управление элементами календаря Outlook
Aspose.Email MapiCalendar Класс предоставляет методы и атрибуты для установки различных свойств элемента календаря. В этом разделе представлены примеры кода для:
- Создать и сохранить элементы календаря
- Сохранить элементы календаря как файлы MSG
- Сохранить идентификаторы продуктов для элементов календаря MAPI в формат ICS
- Получить общее количество событий
- Добавить визуальные напоминания
- Добавить звуковые напоминания
- Добавить/получить вложения из файлов календаря
- Проверить статус получателей в запросах на собрание
- Создать часовой пояс календаря MAPI из стандартного часового пояса
- Установить напоминания для встреч
- Конвертировать Appointment EML в MSG с HTML‑телом
Создать и сохранить элементы календаря
Следующий фрагмент кода показывает, как создать и сохранить элемент календаря в формате ICS.
Сохранить элементы календаря как файлы MSG
Следующий фрагмент кода показывает, как сохранить элемент календаря в формате MSG.
Сохранить идентификаторы продуктов для элементов календаря MAPI в формат ICS
Этот 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 из стандартного часового пояса
Следующий фрагмент кода показывает, как создать 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);