Lavorare con gli elementi del Calendario in un file PST
Aggiunta di MapiCalendar al PST
Creare un nuovo file PST e aggiungere sottocartelle mostrava come creare un file PST e aggiungere una sottocartella. Con Aspose.Email è possibile aggiungere MapiCalendar alla sottocartella Calendar di un file PST che hai creato o caricato. Di seguito i passaggi per aggiungere MapiCalendar a un PST:
- Crea un oggetto MapiCalendar.
- Imposta le proprietà di MapiCalendar usando un costruttore e dei metodi.
- Crea un PST usando il metodo PersonalStorage.create().
- Crea una cartella predefinita (Calendar) alla radice del file PST accedendo alla cartella root 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 file PST appena creato.
Salva gli elementi del calendario da PST su disco in formato ICS
Questo articolo mostra come accedere agli elementi del calendario da un file PST di Outlook e salvare il calendario su disco in formato ICS. Usa le classi PersonalStorage e MapiCalendar per ottenere le informazioni del calendario. Di seguito i passaggi per salvare gli elementi del calendario:
- Carica il file PST nella classe PersonalStorage.
- Esplora la cartella Calendario.
- Ottieni il contenuto della cartella Calendario per ottenere la raccolta dei messaggi.
- Itera attraverso la collezione di messaggi.
- Chiama il metodo PersonalStorage.extract_message() per ottenere le informazioni di contatto nella classe MapiCalendar.
- Chiama il metodo MapiCalendar.save() per salvare l’elemento del calendario su disco in formato ICS.
Il programma seguente carica un file PST dal disco e salva tutti gli elementi del calendario in formato ICS. I file ICS possono quindi essere usati in qualsiasi altro programma che possa caricare il file calendario standard ICS. Aperto in Microsoft Outlook, un file ICS appare come quello nello screenshot qui sotto.
|
| | :- | Il seguente frammento di codice mostra come esportare gli elementi del calendario da Outlook PST al formato ICS.
Salvataggio come ICS con timestamp originale
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/Elimina occorrenze da ricorrenze
Le eccezioni possono essere aggiunte alle ricorrenze esistenti usando l’API Aspose.Email per .NET. Il seguente esempio di codice illustra l’uso di questa funzionalità.
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)