Работа с элементами календаря Outlook

Работа с MapiCalendar

Класс MapiCalendar из Aspose.Email предоставляет методы и атрибуты для установки различных свойств элемента календаря.

Создание и сохранение элементов календаря

Следующий фрагмент кода показывает, как создать и сохранить элемент календаря в формате ICS.

import aspose.email as ae
from datetime import datetime

data_dir = "path/to/data/directory"

# Create the appointment
calendar = ae.mapi.MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Appointment",
    "This is a very important meeting :)",
    datetime(2012, 4, 1),
    datetime(2012, 5, 1))

calendar.save(data_dir + "CalendarItem_out.ics", ae.calendar.AppointmentSaveFormat.ICS)

Сохранение элемента календаря в формате MSG

Следующий фрагмент кода показывает, как сохранить элемент календаря в формате MSG.

Установка идентификатора продукта при сохранении MapiCalendar в формат ICS

Библиотека Aspose.Email позволяет сохранять MapiCalendar (элемент календаря) в файл ICS (iCalendar) с определёнными параметрами. С помощью свойств ics_save_options.keep_original_date_time_stamp и ics_save_options.product_identifier можно сохранить оригинальные метки даты и времени, связанные с элементом календаря, и задать идентификатор продукта в файле ICS, например "Foo Ltd". Идентификатор продукта — это поле, указывающее программное обеспечение или сервис, создавший файл ICS.

Вот пример кода, который позволяет задать идентификатор продукта при сохранении MapiCalendar в формат ICS:

import aspose.email as ae

ics_save_options = ae.mapi.MapiCalendarIcsSaveOptions()
ics_save_options.keep_original_date_time_stamp = True
ics_save_options.product_identifier = "Foo Ltd"

mapiCalendar.save("my.ics", ics_save_options)

Получение общего количества событий

Функциональность CalendarReader Класс позволяет считывать данные календаря из указанного файла. Создавая объект CalendarReader, мы можем извлечь важную информацию, такую как общее количество событий, версия календаря, используемый метод и наличие в календаре множества событий. Следующий фрагмент кода демонстрирует работу с данными календаря и дополнительно загрузку встреч из календаря в виде списка нескольких событий.

import aspose.email as ae

reader = ae.calendar.CalendarReader(fileName)
print(f"Calendar contains {reader.count} events")
print(f"The Version of the calendar is {reader.version}")
print(f"The Method of the calendar is {reader.method}")
print(f"Is calendar contains contains multiple events? - {reader.is_multi_events}")
appointments = reader.load_as_multiple()

Добавление отображаемого напоминания в календарь

Следующий фрагмент кода показывает, как добавить визуальное напоминание в календарь.

Добавление аудио‑напоминания в календарь

Следующий фрагмент кода показывает, как добавить аудио‑напоминание в календарь.

Добавление/получение вложений из файлов календаря

Модуль Aspose.Email Calendar ("ae.calendar") также предоставляет возможность добавлять и получать информацию о вложениях.

  • Чтобы добавить вложение к встрече, создаётся объект "Attachment" с указанием пути к файлу. Затем это вложение добавляется в список вложений встречи. Встреча сохраняется в указанный путь в формате iCalendar с помощью сохранением метод и соответствующий формат файла.

  • Чтобы получить вложения из встречи, её сначала загружают из сохранённого файла с помощью загрузка Метод выводит количество вложений, присутствующих в "appointment2", а также перебирает их, выводя имена.

Приведённый ниже фрагмент кода демонстрирует, как создавать встречи с вложениями, сохранять их и получать информацию о вложениях с помощью модуля "ae.calendar". Он подчёркивает функциональность и возможности работы с встречами и вложениями в приложении календаря.

import aspose.email as ae
import datetime as dt

# Add an attachment to an appointment
attendees = ae.MailAddressCollection()
attendees.append(ae.MailAddress("attendee@domain.com", "Recipient 1"))

appointment = ae.calendar.Appointment("Room 112", dt.datetime(2023, 5, 27), dt.date(2023, 5, 28),  ae.MailAddress("organizer@domain.com"), attendees)

attachment = ae.Attachment("D:\\Aspose\\Files\\Attachment.txt")
appointment.attachments.append(attachment)

appointment.save("D:\\Aspose\\Files\\appWithAttachments_out.ics", ae.calendar.AppointmentSaveFormat.ICS)

# Retrieve attachments from an appointment 
appointment2 = ae.calendar.Appointment.load("D:\\Aspose\\Files\\appWithAttachments_out.ics")
print(appointment2.attachments.length)
for att in appointment2.attachments:
    print(att.name)

Статус получателей из запроса на встречу

Следующий фрагмент кода показывает статус получателей в запросе на встречу.

Конвертация встречи EML в MSG с сохранением тела в формате HTML

Aspose.Email позволяет конвертировать встречу в формате EML в MSG и сохранять HTML‑тело. Свойство "forced_rtf_body_for_appointment" объекта MapiConversionOptions класс используется для управления типом тела встречи. При установке в True тело по умолчанию преобразуется в формат RTF. Чтобы сохранить тело в формате HTML, необходимо установить False. Следующий пример кода показывает, как сохранить HTML‑тело встречи при преобразовании из EML в MSG:

import aspose.email as ae

eml = ae.MailMessage.load("appointment.eml")

conversionOptions = ae.mapi.MapiConversionOptions()
conversionOptions.format = ae.mapi.OutlookMessageFormat.UNICODE
# default value for ForcedRtfBodyForAppointment is true
conversionOptions.forced_rtf_body_for_appointment = False

msg = ae.mapi.MapiMessage.from_mail_message(eml, conversionOptions)

print(f"Body Type: {msg.body_type}")

msg.save("appointment.msg")