Gestión de Contactos de Outlook

Al igual que MapiMessage, Aspose.Email permite crear contactos de Outlook. El MapiContact La clase 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 el MapiContact clase.

Crear y guardar contacto de Outlook

Para crear un contacto y guardarlo en disco:

  1. Instancie un nuevo objeto de la MapiContact clase.
  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.

Guardar Listas de Distribución MAPI en Archivos VCF

El siguiente ejemplo de código muestra cómo guardar una lista de distribución en un archivo VCF multi-contacto:

// convert the `msg` object to a `MapiMessage` object
var dlist = (MapiDistributionList)msg.ToMapiMessageItem();

//save the distribution list
var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
dlist.Save("distribution_list.vcf", options);

Convertir Archivos VCF Multi-Contacto a MapiDistributionList

Aspose.Email admite la conversión de archivos VCF multi-contacto a MapiDistributionList objetos, facilitando la gestión e importación de múltiples contactos directamente en sus aplicaciones. Esta función es accesible mediante los siguientes métodos estáticos en el MapiDistributionList clase:

El siguiente ejemplo de código muestra cómo usar esta función:

// Convert a multi-contact VCF file to a MapiDistributionList
MapiDistributionList dlist = MapiDistributionList.FromVCF(fileName);

Guardar contactos en formato VCF

Para guardar el contacto en formato VCF versión 3, use el VCardVersion enumerable para establecer el VCardSaveOptions.Version propiedad. El siguiente código de ejemplo muestra el uso de VCardVersion enumerable para guardar el contacto en formato VCF versión 3:

var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
options.Version = VCardVersion.V30;
dlist.Save("distribution_list.vcf", options);

Lectura de Contactos MAPI

El MapiContact La clase 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.

Cargar Contactos desde Archivos MSG

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

Cargar Contactos desde VCards

El siguiente fragmento de código muestra cómo cargar contactos desde VCard.

Cargar Contactos MAPI desde vCard con Opciones Personalizadas

Para ofrecer mayor flexibilidad al convertir archivos vCard (.vcf) en contactos MAPI, Aspose.Email para .NET proporciona una sobrecarga MapiContact.FromVCard(string filePath, VCardLoadOptions options) método que acepta un VCardLoadOptions objeto. Ofrece un control mejorado sobre cómo se interpretan los archivos vCard, especialmente al trabajar con diferentes formatos vCard, codificaciones o escenarios avanzados de análisis.

El siguiente ejemplo de código muestra cómo cargar un archivo de contacto .vcf en un MapiContact objeto usando la sobrecarga que acepta VCardLoadOptions. El contacto cargado puede usarse luego dentro de archivos PST, exportación MSG o otros formatos compatibles con Outlook.

var mapiContact = MapiContact.FromVCard("contact.vcf", new VCardLoadOptions());
Console.WriteLine(mapiContact.NameInfo.DisplayName);

Cargar Contactos desde VCards con Codificación Especificada

El siguiente fragmento de código muestra cómo cargar contactos desde VCard con la codificación especificada.

Guardar Elementos de Contacto VCard con Codificación Especificada

Personalice el comportamiento de guardado al trabajar con archivos VCard usando el VCardSaveOptions clase. El PreferredTextEncoding La propiedad de la clase especificará la codificación a usar al guardar elementos de contacto VCard.

El siguiente ejemplo de código muestra cómo implementar esta propiedad en su proyecto:

var cont = VCardContact.Load(fileName, Encoding.UTF8);
var opt = new VCardSaveOptions();
opt.PreferredTextEncoding = Encoding.UTF8;
cont.Save("my.vcard", opt);

Guardar Archivos VCard con Campos Extendidos

El UseExtensions La propiedad permite controlar si se pueden usar campos extendidos al guardar archivos vCard. Cuando se establece en true (predeterminado), se permiten extensiones, proporcionando compatibilidad con campos personalizados e información de contacto adicional.

Leer múltiples contactos en formato VCard

Nuestra biblioteca permite obtener la lista de todos los contactos de una VCard. Puede hacerse usando los siguientes métodos y pasos:

// Checks whether VCard source stream contains multiple contacts.
VCardContact.IsMultiContacts(Stream stream)

// Loads list of all contacts from VCard file.
VCardContact.LoadAsMultiple(string filePath, Encoding encoding)

// Loads list of all contacts from VCard stream.
VCardContact.LoadAsMultiple(Stream stream, Encoding encoding)

El siguiente fragmento de código muestra cómo manejar archivos VCard que contienen múltiples contactos:

using (FileStream stream = new FileStream("test.vcf", FileMode.Open, FileAccess.Read))
{
    if(VCardContact.IsMultiContacts(stream))
    {
        List<VCardContact> contacts = VCardContact.LoadAsMultiple(stream, Encoding.UTF8);
    }
}

Cargar Contactos vCard Asíncronamente

El VCardContact La clase en Aspose.Email para .NET admite la carga asíncrona de archivos vCard. Esto permite a las aplicaciones leer de forma eficiente uno o varios contactos de archivos .vcf o flujos sin bloquear el hilo principal, ideal para aplicaciones modernas de escritorio, web o móviles que manejan listas de contactos extensas. Los siguientes métodos de esta clase pueden realizar la tarea:

  • LoadAsync

  • LoadAsMultipleAsync

El siguiente ejemplo de código muestra cómo cargar de forma asíncrona múltiples contactos vCard desde un archivo .vcf usando VCardContact.LoadAsMultipleAsync. Los contactos cargados se procesan en un bucle, imprimiendo el nombre para mostrar de cada contacto en la consola. El enfoque asíncrono garantiza que la aplicación permanezca responsiva, incluso al leer archivos grandes.

var contacts = await VCardContact.LoadAsMultipleAsync("contacts.vcf", new VCardLoadOptions(), CancellationToken.None);

foreach (var contact in contacts)
{
    Console.WriteLine(contact.IdentificationInfo.DisplayName);
}

Renderizar información de contacto a MHTML

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

//Load VCF Contact and convert to MailMessage for rendering to MHTML
var contact = MapiContact.FromVCard("Contact.vcf");

MemoryStream ms = new MemoryStream();
contact.Save(ms, ContactSaveFormat.Msg);
ms.Position = 0;
MapiMessage msg = MapiMessage.Load(ms, new MsgLoadOptions());
MailConversionOptions op = new MailConversionOptions();
MailMessage eml = msg.ToMailMessage(op);

//Prepare the MHT format options
MhtSaveOptions mhtSaveOptions = new MhtSaveOptions();
mhtSaveOptions.CheckBodyContentEncoding = true;
mhtSaveOptions.PreserveOriginalBoundaries = true;
MhtFormatOptions formatOp = MhtFormatOptions.WriteHeader | MhtFormatOptions.RenderVCardInfo;
mhtSaveOptions.RenderedContactFields = ContactFieldsSet.NameInfo | ContactFieldsSet.PersonalInfo | ContactFieldsSet.Telephones | ContactFieldsSet.Events;
mhtSaveOptions.MhtFormatOptions = formatOp;
eml.Save("ContactMhtml_out.mhtml", mhtSaveOptions);