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

The MapiCalendar клас у бібліотеці Aspose.Email пропонує різноманітні методи та атрибути для налаштування та маніпулювання елементами календаря. Це забезпечує ефективне керування елементами календаря Outlook, підвищуючи продуктивність та організацію. Нижче наведені розділи, які допоможуть вам ознайомитися з різними аспектами управління елементами календаря.

Створення та збереження елементів календаря

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

Наступний фрагмент коду демонструє, як створити та зберегти елемент календаря у форматі ICS:

  1. Визначте шлях, куди буде збережений ваш файл календаря.
  2. Створіть запис, ініціалізувавши новий MapiCalendar об’єкт зі специфічними деталями, такими як місце, тема, опис, час початку та закінчення.
  3. Збережіть створений запис у файл формату 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, наприклад, "Foo Ltd":

  • ics_save_options.keep_original_date_time_stamp
  • ics_save_options.product_identifier

Ідентифікатор продукту — це поле, яке вказує на програмне забезпечення або сервіс, що створив файл ICS.

Ось приклад коду, який дозволяє встановити ідентифікатор продукту під час збереження MapiCalendar у форматі ICS:

import aspose.email as ae
from datetime import datetime

mapi_calendar = ae.mapi.MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Appointment",
    "This is a very important meeting :)",
    datetime(2024, 4, 1),
    datetime(2024, 4, 2))

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

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

Підрахувати загальну кількість подій у календарі

The CalendarReader клас надає можливість читати та аналізувати дані календаря з зазначеного файлу. Ініціалізуючи об’єкт CalendarReader, ви можете отримати важливі деталі, такі як загальна кількість подій, версія календаря, використаний метод та чи містить календар кілька подій. Нижче наведено фрагмент коду, що ілюструє взаємодію з даними календаря та завантаження записів як повного списку подій:

import aspose.email as ae

reader = ae.calendar.CalendarReader("calendar.ics")
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()

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

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

Додати аудіо-нагадування до елементів календаря

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

Явно встановити стан MapiCalendar

Aspose.Email надає метод для явного визначення стану об’єкта MapiCalendar, перевизначаючи типову поведінку:

Коли створюється об’єкт MapiCalendar, йому автоматично присвоюється стан MapiCalendarState.MEETING. Коли елемент отримує одержувач, стан зазвичай змінюється на MapiCalendarState.RECEIVED, і клас повідомлення оновлюється до "IPM.Schedule.Meeting.Request".

Наступний приклад коду демонструє, як створити запис зустрічі за допомогою Aspose.Email для Python через .NET, вручну встановити організатора та стан календаря, і зберегти запис у файл Outlook .msg:

from aspose.email.mapi import MapiCalendar, MapiCalendarState, MapiElectronicAddress
from aspose.email.calendar import AppointmentSaveFormat
from datetime import datetime, timezone

# Create a MapiCalendar appointment
appointment = MapiCalendar(
    "LAKE ARGYLE WA 6743",                     # Location
    "Appointment",                             # Subject
    "This is a very important meeting :)",     # Body
    datetime(2024, 5, 10, 12, 30, 0, tzinfo=timezone.utc),  # Start time (UTC)
    datetime(2024, 5, 10, 13, 30, 0, tzinfo=timezone.utc)   # End time (UTC)
)

# Set the organizer
appointment.organizer = MapiElectronicAddress()
appointment.organizer.email_address = "test@aaa.com"
appointment.organizer.display_name = "test display Name"

# Forcefully set the calendar state to Meeting | Received
appointment.set_state_forced(MapiCalendarState.MEETING | MapiCalendarState.RECEIVED)

# Save the appointment to a .msg file
appointment.save("appointment.msg", AppointmentSaveFormat.MSG)

Викликавши set_state_forced, ви можете вручну встановити стан елемента календаря на конкретне значення (наприклад, MapiCalendarState.RECEIVED). Це особливо корисно, коли ви хочете:

  • Імітуйте отриманий запит на зустріч.

  • Збережіть метадані організатора та зустрічі при збереженні запису у файл .MSG.

  • Налаштуйте робочі процеси календаря, коли типова поведінка недостатня.

Примітка: Ручне встановлення стану за допомогою set_state_forced може впливати на поведінку Outlook, наприклад, на можливість пересилати або повторно надсилати зустріч. Тому його слід використовувати обережно і лише за необхідності для логіки вашого застосунку.

Керування файлами календаря

Додати або отримати вкладення з файлів календаря

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

Щоб включити вкладення до запису, дотримуйтеся наведених нижче кроків:

  1. Створіть Attachment об’єкт, який забезпечує шлях до файлу.
  2. Додайте це вкладення до списку вкладень запису.
  3. Збережіть запис у конкретному шляху файлу у форматі iCalendar, використовуючи зберегти метод і відповідний формат файлу.

Щоб отримати вкладення з запису, виконайте наступні кроки:

  1. Завантажте запис із збереженого файлу, використовуючи завантажити метод.
  2. Отримайте кількість вкладень у записі за допомогою властивості .attachments.length.
  3. Ітерація по кожному вкладенню.
  4. Виведіть назву кожного вкладення, використовуючи властивість .name у циклі.

Нижчий фрагмент коду демонструє, як створювати записи з вкладеннями, зберігати їх та отримувати інформацію про вкладення за допомогою модуля "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)

Отримати статус отримувача з запитів на зустрічі

Aspose.Email дозволяє працювати з запитами на зустрічі, представленими як об’єкт MapiCalendar, та отримувати статус отримувача (відстеження присутності) з таких запитів. Наступний фрагмент коду показує, як визначити статус листа для кожного отримувача:

Конвертувати записи 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")