Gestione degli elementi di calendario nei file PST
Aggiungi Eventi di Calendario ai File PST
Crea Nuovo File PST e Aggiungi Sottocartelle ha dimostrato come creare un file PST e includere sottocartelle al suo interno. Con Aspose.Email, puoi anche aggiungere un MapiCalendar alla sottocartella Calendario di un file PST esistente o appena creato. Di seguito i passaggi per aggiungere un MapiCalendar a un file PST:
- Crea un MapiCalendar oggetto.
- Imposta le proprietà di MapiCalendar usando un costruttore e dei metodi.
- Crea un PST usando il PersonalStorage.create() metodo.
- Crea una cartella predefinita (Calendario) alla radice del file PST accedendo alla cartella radice e poi chiamando il metodo add_mapi_message_item.
Il seguente frammento di codice mostra come creare un MapiCalendar e poi aggiungerlo alla cartella calendario di un nuovo file PST:
Salva Elementi del Calendario Outlook come File ICS
Questo articolo spiega come accedere agli elementi del calendario da un file PST di Outlook e salvarli su disco in formato ICS. Dovrai usare il PersonalStorage e MapiCalendar classi per recuperare i dati del calendario. Segui questi passaggi per salvare gli elementi del calendario:
- Carica il file PST usando il PersonalStorage classe.
- Naviga alla cartella Calendario.
- Recupera la raccolta dei messaggi dalla cartella Calendario.
- Itera attraverso la collezione di messaggi.
- Usa il PersonalStorage.extract_message() metodo per ottenere informazioni di contatto nel MapiCalendar classe.
- Usa il MapiCalendar.save() metodo per salvare ogni elemento del calendario su disco in formato ICS.
Il programma qui sotto carica un file PST dal disco e salva tutti gli elementi del calendario in formato ICS. Questi file ICS possono poi essere usati in qualsiasi altro programma che supporti i file di calendario standard ICS. Quando aperto in Microsoft Outlook, un file ICS appare come mostrato nello screenshot sotto.
![]() |
|---|
Il seguente frammento di codice dimostra come esportare gli elementi del calendario da un Outlook PST a formato ICS:
Salva File ICS con Timestamp Originali
Il metodo keep_original_date_time_stamp della MapiCalendarIcsSaveOptions la classe consente di preservare le date e gli orari originali degli elementi del calendario quando li si salva come file ICS (iCalendar). Il seguente esempio di codice dimostra l’implementazione di questo metodo:
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)
Modifica o Elimina Occorrenze di Ricorrenza nei File PST
Puoi aggiungere eccezioni a modelli di ricorrenza esistenti o eliminare occorrenze specifiche nei file PST usando l’API Aspose.Email per .NET. Il seguente esempio di codice dimostra come eseguire tali modifiche:
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)
