Bekerja dengan Item Kalender di File PST

Menambahkan MapiCalendar ke PST

Buat File PST Baru dan Tambahkan Subfolder menjelaskan cara membuat file PST dan menambahkan subfolder ke dalamnya. Dengan Aspose.Email Anda dapat menambahkan MapiCalendar ke subfolder Calendar dari file PST yang telah Anda buat atau muat. Berikut langkah-langkah untuk menambahkan MapiCalendar ke PST:

  1. Buat objek MapiCalendar.
  2. Atur properti MapiCalendar menggunakan konstruktor dan metode.
  3. Buat PST menggunakan metode PersonalStorage.create().
  4. Buat folder pra-definisi (Calendar) di akar file PST dengan mengakses folder root dan kemudian memanggil metode add_mapi_message_item().

Potongan kode berikut menunjukkan cara membuat MapiCalendar dan kemudian menambahkannya ke folder kalender dari file PST yang baru dibuat.

Simpan Item Kalender dari PST ke Disk dalam Format ICS

Artikel ini menunjukkan cara mengakses item kalender dari file PST Outlook dan menyimpan kalender ke disk dalam format ICS. Gunakan kelas PersonalStorage dan MapiCalendar untuk mendapatkan informasi kalender. Berikut langkah-langkah untuk menyimpan item kalender:

  1. Muat file PST dalam kelas PersonalStorage.
  2. Jelajahi folder Kalender.
  3. Dapatkan isi folder Kalender untuk memperoleh koleksi pesan.
  4. Loop melalui koleksi pesan.
  5. Panggil metode PersonalStorage.extract_message() untuk mendapatkan informasi kontak dalam kelas MapiCalendar.
  6. Panggil metode MapiCalendar.save() untuk menyimpan item kalender ke disk dalam format ICS.

Program di bawah ini memuat file PST dari disk dan menyimpan semua item kalender dalam format ICS. File ICS kemudian dapat digunakan di program lain yang dapat memuat file kalender standar ICS. Dibuka di Microsoft Outlook, file ICS terlihat seperti pada tangkapan layar di bawah.

|todo:image_alt_text| | :- | Potongan kode berikut menunjukkan cara mengekspor item kalender dari Outlook PST ke format ICS.

Menyimpan sebagai ICS dengan Stempel Waktu Asli

Metode keep_original_date_time_stamp dari MapiCalendarIcsSaveOptions kelas memungkinkan mempertahankan cap tanggal dan waktu asli dari item kalender saat menyimpannya sebagai file ICS (iCalendar). Contoh kode berikut memperlihatkan implementasi metode ini:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

calendar_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.APPOINTMENTS)

for msg_info in calendar_folder.enumerate_messages():
    cal = pst.extract_message(msg_info).to_mapi_message_item()

    save_options = ae.mapi.MapiCalendarIcsSaveOptions()
    save_options.keep_original_date_time_stamp = True

    if not (cal is None):
      cal.save("cal.ics", save_options)

Ubah/Hapus Kejadian dari Pengulangan

Pengecualian dapat ditambahkan ke perulangan yang ada menggunakan API Aspose.Email untuk .NET. Contoh kode berikut menggambarkan penggunaan fitur ini.

from datetime import datetime, timedelta
from aspose.email.storage.pst import PersonalStorage, StandardIpmFolder, FileFormatVersion
from aspose.email.mapi import MapiCalendar, MapiCalendarEventRecurrence, \
    MapiCalendarDailyRecurrencePattern, MapiCalendarRecurrenceEndType, \
    MapiCalendarExceptionInfo, MapiCalendarRecurrencePatternType, \
    MapiRecipientCollection, MapiRecipientType

start_date = datetime.now().date()

recurrence = MapiCalendarEventRecurrence()
pattern = MapiCalendarDailyRecurrencePattern()
pattern.pattern_type = MapiCalendarRecurrencePatternType.DAY
pattern.period = 1
pattern.end_type = MapiCalendarRecurrenceEndType.NEVER_END
recurrence.recurrence_pattern = pattern

exception_date = start_date + timedelta(days=1)

# adding one exception
exception_info = MapiCalendarExceptionInfo()
exception_info.location = "London"
exception_info.subject = "Subj"
exception_info.original_start_date = exception_date
exception_info.start_date_time = exception_date
exception_info.end_date_time = exception_date + timedelta(hours=5)
pattern.exceptions.append(exception_info)
pattern.modified_instance_dates.append(exception_date)
# every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date.
pattern.deleted_instance_dates.append(exception_date)

# adding one deleted instance
pattern.deleted_instance_dates.append(exception_date + timedelta(days=2))

rec_coll = MapiRecipientCollection()
rec_coll.add("receiver@domain.com", "receiver", MapiRecipientType.TO)
new_cal = MapiCalendar(
    "This is Location",
    "This is Summary",
    "This is recurrence test",
    start_date,
    start_date + timedelta(hours=3),
    "organizer@domain.com",
    rec_coll
)
new_cal.recurrence = recurrence

with PersonalStorage.create("output.pst", FileFormatVersion.UNICODE) as pst:
    calendar_folder = pst.create_predefined_folder("Calendar", StandardIpmFolder.APPOINTMENTS)
    calendar_folder.add_message(new_cal)