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:
- Instancie um novo objeto da MapiContact classe.
- Inserir informações das propriedades do contato.
- Adicionar dados de foto (se houver).
- 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:
- static MapiDistributionList FromVCF(string filePath)
- static MapiDistributionList FromVCF(Stream stream)
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);