Správa položek kalendáře v souborech PST
Přidat události kalendáře do souborů PST
Vytvořit nový soubor PST a přidat podsložky ukázalo, jak vytvořit soubor PST a zahrnout do něj podsložky. S Aspose.Email můžete také přidat MapiCalendar do podsložky Calendar existujícího nebo nově vytvořeného souboru PST. Níže jsou kroky pro přidání MapiCalendar do souboru PST:
- Vytvořte MapiCalendar objektu.
- Nastavte vlastnosti MapiCalendar pomocí konstruktoru a metod.
- Vytvořte PST pomocí PersonalStorage.create() metoda.
- Vytvořte předdefinovanou složku (Calendar) v kořeni souboru PST přístupem ke kořenové složce a následným voláním metody add_mapi_message_item().
Následující úryvek kódu ukazuje, jak vytvořit MapiCalendar a poté jej přidat do složky kalendáře nově vytvořeného souboru PST:
Uložit položky kalendáře Outlook jako soubory ICS
Tento článek vysvětluje, jak získat položky kalendáře z Outlook PST souboru a uložit je na disk ve formátu ICS. Budete potřebovat použít PersonalStorage a MapiCalendar tříd pro získání dat kalendáře. Následujte tyto kroky pro uložení položek kalendáře:
- Načíst soubor PST pomocí PersonalStorage třída.
- Přejít do složky Calendar.
- Získat kolekci zpráv ze složky Calendar.
- Procházejte kolekci zpráv.
- Použijte PersonalStorage.extract_message() metoda pro získání informací o kontaktu v MapiCalendar třída.
- Použijte MapiCalendar.save() metoda pro uložení každé položky kalendáře na disk ve formátu ICS.
Program níže načte soubor PST z disku a uloží všechny položky kalendáře ve formátu ICS. Tyto soubory ICS pak mohou být použity v jakémkoli jiném programu, který podporuje standardní soubory kalendářů ICS. Po otevření v Microsoft Outlook se soubor ICS zobrazí, jak je uvedeno na níže uvedeném snímku.
![]() |
|---|
Následující úryvek kódu demonstruje, jak exportovat položky kalendáře z Outlook PST do formátu ICS:
Uložit soubory ICS s původními časovými razítky
Metoda keep_original_date_time_stamp třídy MapiCalendarIcsSaveOptions třída umožňuje zachovat původní datum a časové razítko položek kalendáře při jejich ukládání jako soubor ICS (iCalendar). Následující ukázka kódu demonstruje implementaci této 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)
Upravit nebo odstranit výskyty opakování v souborech PST
Můžete přidat výjimky k existujícím vzorům opakování nebo odstranit konkrétní výskyty v souborech PST pomocí Aspose.Email pro .NET API. Následující ukázka kódu demonstruje, jak provést takové úpravy:
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)
