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:

  1. Crea un MapiCalendar oggetto.
  2. Imposta le proprietà di MapiCalendar usando un costruttore e dei metodi.
  3. Crea un PST usando il PersonalStorage.create() metodo.
  4. 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:

  1. Carica il file PST usando il PersonalStorage classe.
  2. Naviga alla cartella Calendario.
  3. Recupera la raccolta dei messaggi dalla cartella Calendario.
  4. Itera attraverso la collezione di messaggi.
  5. Usa il PersonalStorage.extract_message() metodo per ottenere informazioni di contatto nel MapiCalendar classe.
  6. 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.

todo:image_alt_text

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)