Práce s položkami kalendáře v souboru PST
Přidání MapiCalendar do PST
Vytvoření nového souboru PST a přidání podadresářů ukázalo, jak vytvořit soubor PST a přidat do něj podadresář. S Aspose.Email můžete přidat MapiCalendar do podadresáře Calendar v souboru PST, který jste vytvořili nebo načetli. Níže jsou kroky pro přidání MapiCalendar do PST:
- Vytvořte objekt MapiCalendar.
- Nastavte vlastnosti MapiCalendar pomocí konstruktoru a metod.
- Vytvořte PST pomocí metody PersonalStorage.create().
- 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í ukázka kódu vám ukazuje, jak vytvořit MapiCalendar a poté jej přidat do kalendářové složky nově vytvořeného souboru PST.
Uložení položek kalendáře ze souboru PST na disk ve formátu ICS
Tento článek ukazuje, jak získat položky kalendáře ze souboru Outlook PST a uložit kalendář na disk ve formátu ICS. Použijte třídy PersonalStorage a MapiCalendar k získání informací o kalendáři. Níže jsou kroky pro uložení položek kalendáře:
- Načtěte soubor PST ve třídě PersonalStorage.
- Procházejte složku Calendar.
- Získejte obsah složky Calendar pro získání kolekce zpráv.
- Procházejte kolekci zpráv.
- Zavolejte metodu PersonalStorage.extract_message() k získání kontaktních informací ve třídě MapiCalendar.
- Zavolejte metodu MapiCalendar.save() k uložení položky kalendáře na disk ve formátu ICS.
Níže uvedený program načte soubor PST z disku a uloží všechny položky kalendáře ve formátu ICS. Soubory ICS pak mohou být použity v libovolném jiném programu, který umí načíst standardní kalendářní soubor ICS. Pokud je soubor ICS otevřen v Microsoft Outlook, vypadá jako na níže uvedeném snímku obrazovky.
|
| | :- | Následující ukázka kódu vám ukazuje, jak exportovat položky kalendáře z Outlook PST do formátu ICS.
Ukládání jako ICS s originálním časovým razítkem
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/Smazat výskyty z opakování
Výjimky mohou být přidány k existujícím opakováním pomocí Aspose.Email pro .NET API. Následující ukázka kódu ilustruje použití této funkce.
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)