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 del calendario.

Creando y guardando elementos del calendario

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

import aspose.email as ae
from datetime import datetime

data_dir = "path/to/data/directory"

# Crear la cita
calendar = ae.mapi.MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Cita",
    "Esta es una reunión muy importante :)",
    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.

Estableciendo un ID de producto al guardar MapiCalendar en ICS

La biblioteca Aspose.Email permite guardar un MapiCalendar (un elemento del 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 puedes conservar las marcas de tiempo originales asociadas con el elemento del calendario y establecer el identificador del producto en el archivo ICS, por ejemplo, “Foo Ltd”. El identificador del producto es un campo que identifica el software o servicio que generó el archivo ICS.

Aquí tienes un ejemplo de código que te permite establecer un ID de producto al guardar MapiCalendar en 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 el número total de eventos

La funcionalidad de la clase CalendarReader te permite leer datos del calendario desde 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 utilizado 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"El calendario contiene {reader.count} eventos")
print(f"La versión del calendario es {reader.version}")
print(f"El método del calendario es {reader.method}")
print(f"¿El calendario contiene múltiples eventos? - {reader.is_multi_events}")
appointments = reader.load_as_multiple()

Agregando un recordatorio de pantalla a un calendario

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

Agregando un recordatorio de audio a un calendario

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

Agregar/Recuperar adjuntos de archivos del calendario

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

  • Para incluir un adjunto con 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 utilizando el save método y el formato de archivo apropiado.

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

El siguiente fragmento de código demuestra cómo crear citas con adjuntos, guardarlas y recuperar información de adjuntos utilizando el módulo “ae.calendar”. Destaca 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

# Agregar un adjunto a una cita
attendees = ae.MailAddressCollection()
attendees.append(ae.MailAddress("attendee@domain.com", "Destinatario 1"))

appointment = ae.calendar.Appointment("Sala 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)

# Recuperar adjuntos de una cita 
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 hace posible convertir una cita EML a MSG y preservar el cuerpo en HTML. La propiedad “forced_rtf_body_for_appointment” de la clase MapiConversionOptions se utiliza para manipular el tipo del cuerpo de la cita. Cuando se establece en True, el cuerpo se convierte al formato RTF por defecto. Para conservar el cuerpo en formato HTML, debe establecerse en False. El siguiente ejemplo de código muestra cómo preservar el cuerpo en 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
# el valor predeterminado para ForcedRtfBodyForAppointment es verdadero
conversionOptions.forced_rtf_body_for_appointment = False

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

print(f"Tipo de cuerpo: {msg.body_type}")

msg.save("appointment.msg")