Zarządzanie elementami kalendarza w plikach PST
Dodaj wydarzenia kalendarza do plików PST
Utwórz nowy plik PST i dodaj podfoldery pokazało, jak utworzyć plik PST i zawrzeć w nim podfoldery. Z Aspose.Email możesz również dodać MapiCalendar do podfolderu Kalendarz istniejącego lub nowo utworzonego pliku PST. Poniżej znajdują się kroki dodawania MapiCalendar do pliku PST:
- Utwórz MapiCalendar obiekt.
- Ustaw właściwości MapiCalendar przy użyciu konstruktora i metod.
- Utwórz PST przy użyciu PersonalStorage.create() metoda.
- Utwórz wstępnie zdefiniowany folder (Kalendarz) w korzeniu pliku PST, uzyskując dostęp do folderu głównego, a następnie wywołując metodę add_mapi_message_item().
Poniższy fragment kodu pokazuje, jak utworzyć MapiCalendar i dodać go do folderu kalendarza w nowo utworzonym pliku PST:
Zapisz pozycje kalendarza Outlook jako pliki ICS
Ten artykuł wyjaśnia, jak uzyskać dostęp do pozycji kalendarza z pliku Outlook PST i zapisać je na dysku w formacie ICS. Będziesz musiał użyć PersonalStorage i MapiCalendar klas do pobrania danych kalendarza. Postępuj zgodnie z tymi krokami, aby zapisać pozycje kalendarza:
- Załaduj plik PST używając PersonalStorage klasa.
- Przejdź do folderu Kalendarz.
- Pobierz kolekcję wiadomości z folderu Kalendarz.
- Iteruj po kolekcji wiadomości.
- Użyj PersonalStorage.extract_message() metoda do uzyskania informacji kontaktowych w MapiCalendar klasa.
- Użyj MapiCalendar.save() metoda do zapisywania każdej pozycji kalendarza na dysku w formacie ICS.
Program poniżej ładuje plik PST z dysku i zapisuje wszystkie pozycje kalendarza w formacie ICS. Pliki te mogą być użyte w dowolnym programie obsługującym standardowe pliki kalendarza ICS. Po otwarciu w Microsoft Outlook, plik ICS wygląda jak na poniższym zrzucie ekranu.
![]() |
|---|
Poniższy fragment kodu demonstruje, jak wyeksportować pozycje kalendarza z Outlook PST do formatu ICS:
Zapisz pliki ICS z oryginalnymi znacznikami 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 lub usuń wystąpienia powtarzania w plikach PST
Możesz dodać wyjątki do istniejących wzorców powtarzania lub usunąć określone wystąpienia w plikach PST używając Aspose.Email dla .NET API. Poniższy przykład kodu demonstruje, jak wprowadzić takie modyfikacje:
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)
