Gerenciamento de Contatos do Outlook

Assim como MapiMessage, o Aspose.Email permite criar contatos do Outlook. O MapiContact a classe fornece todas as propriedades relacionadas a contato necessárias para criar um contato do Outlook. Este artigo mostra como criar, salvar e ler um contato do Outlook usando o MapiContact classe.

Criar e Salvar Contato do Outlook

Para criar um contato e salvá‑lo em disco:

  1. Instancie um novo objeto da MapiContact classe.
  2. Inserir informações das propriedades do contato.
  3. Adicionar dados de foto (se houver).
  4. Salve o contato no formato MSG ou VCard.

O trecho de código a seguir mostra como criar e salvar um contato do Outlook.

Salvar Listas de Distribuição MAPI em Arquivos VCF

O exemplo de código abaixo demonstra como salvar uma lista de distribuição em um arquivo VCF multi‑contato:

// 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);

Converter Arquivos VCF Multi‑Contato para MapiDistributionList

Aspose.Email suporta a conversão de arquivos VCF com múltiplos contatos em MapiDistributionList objetos, facilitando o gerenciamento e a importação de múltiplos contatos diretamente em suas aplicações. Este recurso está acessível por meio dos seguintes métodos estáticos no MapiDistributionList classe:

O exemplo de código abaixo demonstra como usar este recurso:

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

Salvar Contatos em Formato VCF

Para salvar o contato no formato VCF versão 3, use o VCardVersion enumerável para definir o VCardSaveOptions.Version propriedade. O código de exemplo a seguir demonstra o uso de VCardVersion enumerável para salvar o contato no formato VCF versão 3:

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

Leitura de Contatos MAPI

O MapiContact a classe pode ser usada para carregar contatos nos formatos Outlook MSG e VCard. O trecho de código a seguir mostra como carregar contatos do Outlook salvos como MSG e VCF em um MapiContact.

Carregar Contatos de Arquivos MSG

O trecho de código a seguir mostra como carregar contatos a partir de MSG.

Carregar Contatos de VCards

O trecho de código a seguir mostra como carregar contatos a partir de VCard.

Carregar Contatos MAPI de vCard com Opções Personalizadas

Para oferecer mais flexibilidade ao converter arquivos vCard (.vcf) em contatos MAPI, o Aspose.Email para .NET fornece uma sobrecarga MapiContact.FromVCard(string filePath, VCardLoadOptions options) método que aceita um VCardLoadOptions objeto. Ele oferece controle aprimorado sobre como os arquivos vCard são interpretados – especialmente ao trabalhar com diferentes formatos vCard, codificações ou cenários avançados de análise.

O exemplo de código a seguir demonstra como carregar um arquivo de contato .vcf em um MapiContact objeto usando a sobrecarga que aceita VCardLoadOptions. O contato carregado pode então ser usado em arquivos PST, exportação MSG ou outros formatos compatíveis com Outlook.

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

Carregar Contatos de VCards com Codificação Especificada

O trecho de código a seguir mostra como carregar contatos a partir de VCard com a codificação especificada.

Salvar Itens de Contato VCard com Codificação Especificada

Personalize o comportamento de salvamento ao trabalhar com arquivos VCard usando o VCardSaveOptions classe. O PreferredTextEncoding a propriedade da classe especificará a codificação a ser usada ao salvar itens de contato VCard.

O exemplo de código a seguir mostra como implementar esta propriedade em seu projeto:

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

Salvar Arquivos VCard com Campos Estendidos

O UseExtensions A propriedade permite controlar se campos estendidos podem ser usados ao salvar arquivos vCard. Quando definida como true (padrão), extensões são permitidas, proporcionando compatibilidade com campos personalizados e informações de contato adicionais.

Ler múltiplos contatos no formato VCard

Nossa biblioteca possibilita obter a lista de todos os contatos de um VCard. Isso pode ser feito usando os seguintes métodos e etapas:

// 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)

O trecho de código a seguir demonstra como lidar com arquivos VCard que contêm múltiplos contatos:

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

Carregar Contatos vCard Assincronamente

O VCardContact A classe em Aspose.Email para .NET suporta o carregamento assíncrono de arquivos vCard. Isso permite que aplicações leiam de forma eficiente contatos individuais ou múltiplos de arquivos ou streams .vcf sem bloquear a thread principal – ideal para aplicações modernas de desktop, web ou mobile que lidam com listas de contatos extensas. Os seguintes métodos desta classe podem executar a tarefa:

  • LoadAsync

  • LoadAsMultipleAsync

O exemplo de código a seguir demonstra como carregar assíncronamente múltiplos contatos vCard a partir de um arquivo .vcf usando VCardContact.LoadAsMultipleAsync. Os contatos carregados são processados em um loop, imprimindo o nome de exibição de cada contato no console. A abordagem assíncrona garante que a aplicação permaneça responsiva, mesmo ao ler arquivos grandes.

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

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

Renderizar informações de contato para MHTML

Contato do Outlook pode ser convertido para MHTML usando a API Aspose.Email. Este exemplo mostra como um VCard é carregado em MapiContact e então convertido para MHTML com a ajuda 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);