Administrar elementos del calendario en archivos PST
Agregar eventos de calendario a archivos PST
Crear archivo PST nuevo y agregar subcarpetas demostró cómo crear un archivo PST e incluir subcarpetas dentro de él. Con Aspose.Email, también puede agregar un MapiCalendar a la subcarpeta Calendario de un archivo PST existente o recién creado. A continuación se presentan los pasos para agregar un MapiCalendar a un archivo PST:
- Cree un MapiCalendar objeto.
- Establezca las propiedades de MapiCalendar usando un constructor y métodos.
- Crear un PST usando el PersonalStorage.create() método.
- Crear una carpeta predefinida (Calendario) en la raíz del archivo PST accediendo a la carpeta raíz y luego llamando al método add_mapi_message_item().
El siguiente fragmento de código muestra cómo crear un MapiCalendar y luego agregarlo a la carpeta de calendario de un archivo PST recién creado:
Guardar elementos de calendario de Outlook como archivos ICS
Este artículo explica cómo acceder a los elementos del calendario de un archivo PST de Outlook y guardarlos en disco en formato ICS. Necesitará usar el PersonalStorage y MapiCalendar clases para recuperar los datos del calendario. Siga estos pasos para guardar los elementos del calendario:
- Cargar el archivo PST usando el PersonalStorage clase.
- Navegar a la carpeta Calendario.
- Recuperar la colección de mensajes de la carpeta Calendario.
- Iterar a través de la colección de mensajes.
- Utilice el PersonalStorage.extract_message() método para obtener información de contacto en el MapiCalendar clase.
- Utilice el MapiCalendar.save() método para guardar cada elemento de calendario en disco en formato ICS.
El programa a continuación carga un archivo PST desde el disco y guarda todos los elementos de calendario en formato ICS. Estos archivos ICS pueden usarse en cualquier otro programa que admita archivos de calendario ICS estándar. Cuando se abre en Microsoft Outlook, un archivo ICS aparece como se muestra en la captura de pantalla a continuación.
![]() |
|---|
El siguiente fragmento de código muestra cómo exportar elementos de calendario de un Outlook PST a formato ICS:
Guardar archivos ICS con marcas de tiempo originales
El método keep_original_date_time_stamp de la MapiCalendarIcsSaveOptions la clase permite preservar las marcas de fecha y hora originales de los elementos del calendario al guardarlos como un archivo ICS (iCalendar). El siguiente ejemplo de código demuestra la implementación de este método:
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)
Modificar o eliminar ocurrencias de recurrencia en archivos PST
Puede agregar excepciones a los patrones de recurrencia existentes o eliminar ocurrencias específicas en archivos PST usando la API Aspose.Email para .NET. El siguiente ejemplo de código muestra cómo realizar dichas modificaciones:
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)
