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:
- Utwórz obiekt MapiCalendar.
- Ustaw właściwości MapiCalendar przy użyciu konstruktora i metod.
- Utwórz plik PST przy użyciu metody PersonalStorage.create().
- 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:
- Wczytaj plik PST przy użyciu klasy PersonalStorage.
- Przeglądaj folder Calendar.
- Uzyskaj zawartość folderu Calendar, aby otrzymać kolekcję wiadomości.
- Iteruj po kolekcji wiadomości.
- Wywołaj metodę PersonalStorage.extract_message(), aby uzyskać informacje kontaktowe w klasie MapiCalendar.
- 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.
|
| | :- | 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)