Praca z elementami Kalendarza w pliku PST

Dodawanie MapiCalendar do PST

Tworzenie nowego pliku PST i dodawanie podfolderów pokazało, jak utworzyć plik PST i dodać do niego podfolder. Dzięki Aspose.Email możesz dodać MapiCalendar do podfolderu Calendar w pliku PST, który utworzyłeś lub wczytałeś. Poniżej kroki dodania MapiCalendar do PST:

  1. Utwórz obiekt MapiCalendar.
  2. Ustaw właściwości MapiCalendar przy użyciu konstruktora i metod.
  3. Utwórz plik PST przy użyciu metody PersonalStorage.create().
  4. Utwórz wstępnie zdefiniowany folder (Calendar) w korzeniu pliku PST, uzyskując dostęp do folderu głównego i wywołując metodę add_mapi_message_item().

Poniższy fragment kodu pokazuje, jak utworzyć MapiCalendar i dodać go do folderu kalendarza nowo utworzonego pliku PST.

Zapis elementów kalendarza z PST na dysk w formacie ICS

Ten artykuł pokazuje, jak uzyskać dostęp do elementów kalendarza z pliku Outlook PST i zapisać kalendarz na dysku w formacie ICS. Użyj klas PersonalStorage i MapiCalendar, aby pobrać informacje kalendarza. Poniżej kroki zapisu elementów kalendarza:

  1. Wczytaj plik PST przy użyciu klasy PersonalStorage.
  2. Przeglądaj folder Calendar.
  3. Uzyskaj zawartość folderu Calendar, aby otrzymać kolekcję wiadomości.
  4. Iteruj po kolekcji wiadomości.
  5. Wywołaj metodę PersonalStorage.extract_message(), aby uzyskać informacje kontaktowe w klasie MapiCalendar.
  6. Wywołaj metodę MapiCalendar.save(), aby zapisać element kalendarza na dysku w formacie ICS.

Program poniżej wczytuje plik PST z dysku i zapisuje wszystkie pozycje kalendarza w formacie ICS. Pliki ICS mogą być następnie użyte w dowolnym innym programie, który potrafi wczytać standardowy plik kalendarza ICS. Otwarty w Microsoft Outlook, plik ICS wygląda tak, jak na poniższym zrzucie ekranu.

|todo:image_alt_text| | :- | Poniższy fragment kodu pokazuje, jak wyeksportować pozycje kalendarza z Outlook PST do formatu ICS.

Zapisywanie jako ICS z oryginalnym znacznikiem czasu

Metoda keep_original_date_time_stamp klasy MapiCalendarIcsSaveOptions klasa umożliwia zachowanie oryginalnych znaczników daty i czasu elementów kalendarza przy zapisywaniu ich jako plik ICS (iCalendar). Poniższy przykład kodu demonstruje implementację tej metody:

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)

Modyfikuj/Usuń wystąpienia z powtórzeń

Wyjątki można dodać do istniejących powtórzeń przy użyciu Aspose.Email dla .NET API. Poniższy przykład kodu ilustruje użycie tej funkcji.

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)