Mengelola Item Kalender dalam File PST

Tambah Acara Kalender ke File PST

Buat File PST Baru dan Tambahkan Subfolder menunjukkan cara membuat file PST dan menyertakan subfolder di dalamnya. Dengan Aspose.Email, Anda juga dapat menambahkan MapiCalendar ke subfolder Kalender dari file PST yang ada atau yang baru dibuat. Berikut langkah-langkah menambahkan MapiCalendar ke file PST:

  1. Buat sebuah MapiCalendar objek.
  2. Atur properti MapiCalendar menggunakan konstruktor dan metode.
  3. Buat PST menggunakan PersonalStorage.create() metode.
  4. Buat folder pra-tentukan (Kalender) di root 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 Outlook sebagai File ICS

Artikel ini menjelaskan cara mengakses item kalender dari file PST Outlook dan menyimpannya ke disk dalam format ICS. Anda perlu menggunakan PersonalStorage dan MapiCalendar kelas untuk mengambil data kalender. Ikuti langkah-langkah berikut untuk menyimpan item kalender:

  1. Muat file PST menggunakan PersonalStorage kelas.
  2. Navigasi ke folder Kalender.
  3. Ambil koleksi pesan dari folder Kalender.
  4. Loop melalui koleksi pesan.
  5. Gunakan PersonalStorage.extract_message() metode untuk memperoleh informasi kontak dalam MapiCalendar kelas.
  6. Gunakan MapiCalendar.save() metode untuk menyimpan setiap item kalender ke disk dalam format ICS.

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

todo:image_alt_text

Potongan kode berikut menunjukkan cara mengekspor item kalender dari PST Outlook ke format ICS:

Simpan File 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 atau Hapus Kejadian Pengulangan dalam File PST

Anda dapat menambahkan pengecualian pada pola pengulangan yang ada atau menghapus kejadian tertentu dalam file PST menggunakan API Aspose.Email untuk .NET. Contoh kode berikut menunjukkan cara melakukan modifikasi tersebut:

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)