Trabajando con elementos del calendario de Outlook

Trabajando con MapiCalendar

La clase MapiCalendar de Aspose.Email proporciona métodos y atributos para establecer varias propiedades de un elemento de calendario.

Crear y guardar elementos del calendario

El siguiente fragmento de código muestra cómo crear y guardar un elemento de calendario en formato ICS.

import aspose.email as ae
from datetime import datetime

data_dir = "path/to/data/directory"

# Create the appointment
calendar = ae.mapi.MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Appointment",
    "This is a very important meeting :)",
    datetime(2012, 4, 1),
    datetime(2012, 5, 1))

calendar.save(data_dir + "CalendarItem_out.ics", ae.calendar.AppointmentSaveFormat.ICS)

Guardando el elemento del calendario como MSG

El siguiente fragmento de código muestra cómo guardar el elemento del calendario como MSG.

Establecer un ID de producto al guardar MapiCalendar a ICS

La biblioteca Aspose.Email permite guardar un MapiCalendar (un elemento de calendario) en un archivo ICS (iCalendar) con opciones específicas. Con las propiedades ics_save_options.keep_original_date_time_stamp y ics_save_options.product_identifier puede conservar las marcas de fecha y hora originales asociadas al elemento del calendario y establecer el identificador del producto en el archivo ICS, por ejemplo a "Foo Ltd". El identificador del producto es un campo que identifica el software o servicio que generó el archivo ICS.

Aquí hay un ejemplo de código que le permite establecer un ID de producto al guardar MapiCalendar a ICS:

import aspose.email as ae

ics_save_options = ae.mapi.MapiCalendarIcsSaveOptions()
ics_save_options.keep_original_date_time_stamp = True
ics_save_options.product_identifier = "Foo Ltd"

mapiCalendar.save("my.ics", ics_save_options)

Obteniendo número total de eventos

La funcionalidad de la CalendarReader la clase permite leer datos de calendario de un archivo especificado. Al crear un objeto CalendarReader, podemos extraer información importante como el número total de eventos, la versión del calendario, el método usado y si el calendario contiene múltiples eventos. El siguiente fragmento de código demuestra cómo trabajar con datos de calendario y, adicionalmente, cargar las citas del calendario como una lista de múltiples eventos.

import aspose.email as ae

reader = ae.calendar.CalendarReader(fileName)
print(f"Calendar contains {reader.count} events")
print(f"The Version of the calendar is {reader.version}")
print(f"The Method of the calendar is {reader.method}")
print(f"Is calendar contains contains multiple events? - {reader.is_multi_events}")
appointments = reader.load_as_multiple()

Agregar recordatorio visual a un calendario

El siguiente fragmento de código muestra cómo añadir un recordatorio visual a un calendario.

Agregar recordatorio de audio a un calendario

El siguiente fragmento de código le muestra cómo agregar un recordatorio de audio a un calendario.

Agregar/Recuperar adjuntos de archivos de calendario

El módulo Aspose.Email Calendar ("ae.calendar") también proporciona la funcionalidad para agregar y recuperar información de adjuntos.

  • Para incluir un archivo adjunto en la cita, se crea un objeto "Attachment" proporcionando la ruta del archivo. Este adjunto se agrega a la lista de adjuntos de la cita. La cita se guarda en una ruta de archivo específica en formato iCalendar usando el guardar método y el formato de archivo apropiado.

  • Para recuperar los archivos adjuntos de una cita, primero se carga desde el archivo guardado usando el load método, se muestra el número de archivos adjuntos presentes en "appointment2", y al iterar sobre los archivos adjuntos se imprimen sus nombres.

El fragmento de código a continuación demuestra cómo crear citas con archivos adjuntos, guardarlas y recuperar información de los archivos adjuntos usando el módulo "ae.calendar". Resalta la funcionalidad y capacidades de trabajar con citas y adjuntos en una aplicación de calendario.

import aspose.email as ae
import datetime as dt

# Add an attachment to an appointment
attendees = ae.MailAddressCollection()
attendees.append(ae.MailAddress("attendee@domain.com", "Recipient 1"))

appointment = ae.calendar.Appointment("Room 112", dt.datetime(2023, 5, 27), dt.date(2023, 5, 28),  ae.MailAddress("organizer@domain.com"), attendees)

attachment = ae.Attachment("D:\\Aspose\\Files\\Attachment.txt")
appointment.attachments.append(attachment)

appointment.save("D:\\Aspose\\Files\\appWithAttachments_out.ics", ae.calendar.AppointmentSaveFormat.ICS)

# Retrieve attachments from an appointment 
appointment2 = ae.calendar.Appointment.load("D:\\Aspose\\Files\\appWithAttachments_out.ics")
print(appointment2.attachments.length)
for att in appointment2.attachments:
    print(att.name)

Estado de los destinatarios de una solicitud de reunión

El siguiente fragmento de código muestra cómo obtener el estado de los destinatarios de una solicitud de reunión.

Convertir cita EML a MSG preservando el cuerpo en formato HTML

Aspose.Email permite convertir una cita EML a MSG y preservar el cuerpo HTML. La propiedad "forced_rtf_body_for_appointment" del MapiConversionOptions La clase se usa para manipular el tipo del cuerpo de la cita. Cuando se establece en True, el cuerpo se convierte a formato RTF por defecto. Para mantener el cuerpo en formato HTML, debe establecerse en False. El siguiente ejemplo de código muestra cómo preservar el cuerpo HTML de la cita al convertirla de EML a MSG:

import aspose.email as ae

eml = ae.MailMessage.load("appointment.eml")

conversionOptions = ae.mapi.MapiConversionOptions()
conversionOptions.format = ae.mapi.OutlookMessageFormat.UNICODE
# default value for ForcedRtfBodyForAppointment is true
conversionOptions.forced_rtf_body_for_appointment = False

msg = ae.mapi.MapiMessage.from_mail_message(eml, conversionOptions)

print(f"Body Type: {msg.body_type}")

msg.save("appointment.msg")