Trabajando con contactos de Outlook

Crear, guardar y leer contactos

Al igual que MapiMessage, Aspose.Email permite crear contactos de Outlook. La clase MapiContact proporciona todas las propiedades relacionadas con contactos necesarias para crear un contacto de Outlook. Este artículo muestra cómo crear, guardar y leer un contacto de Outlook usando la clase MapiContact.

Crear y guardar contacto de Outlook

Para crear un contacto y guardarlo en disco:

  1. Instanciar un nuevo objeto de la clase MapiContact.
  2. Introduzca la información de las propiedades del contacto.
  3. Agregar datos de foto (si los hay).
  4. Guarde el contacto en formato MSG o VCard.

El siguiente fragmento de código muestra cómo crear y guardar un contacto de Outlook.

import aspose.email as ae

data_dir = "path/to/data/directory"

contact = ae.mapi.MapiContact()
contact.name_info = ae.mapi.MapiContactNamePropertySet("Bertha", "A.", "Buell")
contact.professional_info = ae.mapi.MapiContactProfessionalPropertySet("Awthentikz", "Social work assistant")
contact.personal_info.personal_home_page = "B2BTies.com"
contact.physical_addresses.work_address.address = "Im Astenfeld 59 8580 EDELSCHROTT"
contact.electronic_addresses.email1 = ae.mapi.MapiContactElectronicAddress("Experwas", "SMTP", "BerthaABuell@armyspy.com")
contact.telephones = ae.mapi.MapiContactTelephonePropertySet("06605045265")
contact.personal_info.children = ["child1", "child2", "child3"]
contact.categories = ["category1", "category2", "category3"]
contact.mileage = "Some test mileage"
contact.billing = "Test billing information"
contact.other_fields.journal = True
contact.other_fields.private = True
contact.other_fields.reminder_topic = "Test topic"
contact.other_fields.user_field1 = "ContactUserField1"
contact.other_fields.user_field2 = "ContactUserField2"
contact.other_fields.user_field3 = "ContactUserField3"
contact.other_fields.user_field4 = "ContactUserField4"

# Add a photo
with open(data_dir + "Desert.jpg", "rb") as file:
    buffer = file.read()
    contact.photo = ae.mapi.MapiContactPhoto(buffer, ae.mapi.MapiContactPhotoImageFormat.Jpeg)

# Save the Contact in MSG format
contact.save(data_dir + "MapiContact_out.msg", ae.mapi.ContactSaveFormat.MSG)

# Save the Contact in VCF format
contact.save(data_dir + "MapiContact_out.vcf", ae.mapi.ContactSaveFormat.V_CARD)

Guardar contacto en formato VCF Versión 3

Para guardar un contacto en formato VCF Versión 3, use la propiedad version del VCardSaveOptions clase. Cree una nueva instancia de la clase VCardSaveOptions, establezca la propiedad version del objeto VCardSaveOptions a VCardVersion.V30. Esto establece la versión vCard a 3.0. Llame al método save del objeto MapiContact, pasando el nombre de archivo "contact.vcf" y el objeto VCardSaveOptions como parámetros. Esto guarda el contacto como un archivo vCard con el nombre y opciones especificados. El siguiente fragmento de código muestra cómo guardar un contacto en formato VCF Versión 3:

import aspose.email as ae

contact = ae.mapi.MapiContact()
contact.name_info = ae.mapi.MapiContactNamePropertySet("Bertha", "A.", "Buell")
options = ae.personalinfo.vcard.VCardSaveOptions()
options.version = ae.personalinfo.vcard.VCardVersion.V30
contact.save("contact.vcf", options)

Leyendo un MapiContact

La clase MapiContact puede usarse para cargar contactos en formato Outlook MSG y VCard. El siguiente fragmento de código muestra cómo cargar contactos de Outlook guardados como MSG y VCF en un MapiContact.

Cargando un contacto desde MSG

El siguiente fragmento de código muestra cómo cargar un contacto desde MSG.

Cargando un contacto desde VCard

El siguiente fragmento de código muestra cómo cargar un contacto desde vCard.

Cargando un contacto desde VCard con codificación especificada

El siguiente fragmento de código muestra cómo cargar un contacto desde vCard con codificación especificada.

Guardando elementos de contacto VCard con codificación especificada

Al guardar un archivo vCard, es posible especificar la codificación de caracteres a usar, asegurando compatibilidad con caracteres no ASCII. Establezca la propiedad preferred_text_encoding del objeto VCardSaveOptions a "utf-8". El siguiente fragmento de código muestra cómo implementar esta función en su proyecto:

import aspose.email as ae

contact = ae.mapi.MapiContact()
contact.name_info = ae.mapi.MapiContactNamePropertySet("Bertha", "A.", "Buell")
options = ae.personalinfo.vcard.VCardSaveOptions()
options.preferred_text_encoding = "utf-8"
contact.save("contact.vcf", options)

Guardando archivos VCard con campos extendidos

Al guardar un archivo vCard, también puede especificar opciones, incluyendo el uso de campos extendidos, que son propiedades o atributos adicionales que pueden añadirse a un vCard más allá del conjunto estándar de campos definido por la especificación vCard. La propiedad use_extensions del VCardSaveOptions la clase le permite hacerlo. El siguiente fragmento de código muestra cómo guardar un archivo VCard con campos extendidos:

import aspose.email as ae

contact = ae.mapi.MapiContact()
contact.name_info = ae.mapi.MapiContactNamePropertySet("Bertha", "A.", "Buell")
options = ae.personalinfo.vcard.VCardSaveOptions()
options.use_extensions = True
contact.save("contact.vcf", options)

Lectura de múltiples contactos en formato VCard

Necesitará los siguientes métodos para obtener la lista de todos los contactos de una VCard:

# Checks whether VCard source stream contains multiple contacts.
aspose.email.personalinfo.vcard.VCardContact.is_multi_contacts(stream)

# Loads list of all contacts from VCard file.
aspose.email.personalinfo.vcard.VCardContact.load_as_multiple(file_path, encoding)

# Loads list of all contacts from VCard stream.
aspose.email.personalinfo.vcard.VCardContact.load_as_multiple(stream, encoding)

El fragmento de código a continuación demostrará el proceso de lectura de múltiples contactos de un archivo VCard:

import aspose.email as ae

contact = ae.mapi.MapiContact()
contact.name_info = ae.mapi.MapiContactNamePropertySet("Bertha", "A.", "Buell")
options = ae.personalinfo.vcard.VCardSaveOptions()
options.use_extensions = True
contact.save("contact.vcf", options)

if ae.personalinfo.vcard.VCardContact.is_multi_contacts("contact.vcf"):
    ae.personalinfo.vcard.VCardContact.load_as_multiple("contact.vcf")

Renderizando Información de Contacto a MHTML

El contacto de Outlook puede convertirse a MHTML usando la API Aspose.Email. Este ejemplo muestra cómo se carga una VCard en MapiContact y luego se convierte a MHTML con la ayuda de la API MailMessage.