Gestione contatti Outlook

Come MapiMessage, Aspose.Email permette di creare contatti Outlook. Il MapiContact La classe fornisce tutte le proprietà relative ai contatti necessarie per creare un contatto Outlook. Questo articolo mostra come creare, salvare e leggere un contatto Outlook usando il MapiContact classe.

Crea e salva un contatto Outlook

Per creare un contatto e salvarlo su disco:

  1. Istanzia un nuovo oggetto della MapiContact classe.
  2. Inserisci le informazioni delle proprietà del contatto.
  3. Aggiungi dati foto (se presenti).
  4. Salva il contatto in formato MSG o VCard.

Il frammento di codice seguente mostra come creare e salvare un contatto Outlook.

Salva liste di distribuzione MAPI in file VCF

Il seguente esempio di codice dimostra come salvare una lista di distribuzione in un file VCF multi-contatto:

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

Converti file VCF multi-contatto in MapiDistributionList

Aspose.Email supporta la conversione di file VCF multipli in MapiDistributionList oggetti, rendendo facile gestire e importare più contatti direttamente nelle tue applicazioni. Questa funzionalità è accessibile tramite i seguenti metodi statici nella MapiDistributionList classe:

L’esempio di codice seguente dimostra come usare questa funzionalità:

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

Salva contatti in formato VCF

Per salvare il contatto in formato VCF versione 3, usa il VCardVersion enumerable per impostare il VCardSaveOptions.Version proprietà. Il seguente codice di esempio dimostra l’uso di VCardVersion enumerabile per salvare il contatto nel formato VCF versione 3:

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

Lettura contatti MAPI

Il MapiContact La classe può essere usata per caricare contatti sia in formato Outlook MSG che VCard. Il seguente snippet di codice mostra come caricare contatti Outlook salvati come MSG e VCF in un MapiContact.

Carica contatti da file MSG

Il seguente snippet di codice mostra come caricare contatti da MSG.

Carica contatti da VCard

Il seguente snippet di codice mostra come caricare contatti da VCard.

Carica contatti MAPI da vCard con opzioni personalizzate

Per fornire maggiore flessibilità nella conversione di file vCard (.vcf) in contatti MAPI, Aspose.Email per .NET fornisce una sovraccarico MapiContact.FromVCard(string filePath, VCardLoadOptions options) metodo che accetta un VCardLoadOptions oggetto. Offre un controllo migliorato su come i file vCard vengono interpretati - soprattutto quando si lavora con formati vCard diversi, codifiche o scenari di parsing avanzati.

Il seguente esempio di codice dimostra come caricare un file contatto .vcf in un MapiContact oggetto usando la sovraccarico che accetta VCardLoadOptions. Il contatto caricato può poi essere usato all’interno di file PST, esportazione MSG o altri formati compatibili con Outlook.

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

Carica contatti da VCard con codifica specificata

Il seguente snippet di codice mostra come caricare contatti da VCard con la codifica specificata.

Salva elementi di contatto VCard con codifica specificata

Personalizza il comportamento di salvataggio quando lavori con file VCard usando il VCardSaveOptions classe. Il PreferredTextEncoding la proprietà della classe specificherà la codifica da usare quando si salvano gli elementi di contatto VCard.

Il seguente esempio di codice mostra come implementare questa proprietà nel tuo progetto:

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

Salva file VCard con campi estesi

Il UseExtensions la proprietà consente di controllare se i campi estesi possono essere usati durante il salvataggio di file VCard. Quando impostata su true (default), le estensioni sono permesse, fornendo compatibilità con campi personalizzati e informazioni aggiuntive di contatto.

Leggi più contatti in formato VCard

La nostra libreria rende possibile ottenere l’elenco di tutti i contatti da una VCard. Può essere fatto usando i seguenti metodi e passaggi:

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

Il seguente snippet di codice dimostra come gestire file VCard che contengono più contatti:

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

Carica contatti vCard in modo asincrono

Il VCardContact La classe in Aspose.Email per .NET supporta il caricamento asincrono di file vCard. Questo permette alle applicazioni di leggere in modo efficiente singoli o più contatti da file .vcf o stream senza bloccare il thread principale - ideale per applicazioni desktop, web o mobile moderne che gestiscono grandi elenchi di contatti. I seguenti metodi di questa classe possono svolgere il compito:

  • LoadAsync

  • LoadAsMultipleAsync

Il seguente esempio di codice dimostra come caricare in modo asincrono più contatti vCard da un file .vcf usando VCardContact.LoadAsMultipleAsync. I contatti caricati vengono elaborati in un ciclo, stampando il nome visualizzato di ciascun contatto nella console. L’approccio asincrono garantisce che l’applicazione rimanga reattiva, anche durante la lettura di file di grandi dimensioni.

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

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

Rendi informazioni del contatto in MHTML

Il contatto Outlook può essere convertito in MHTML usando l’API di Aspose.Email. Questo esempio mostra come un VCard viene caricato in MapiContact e poi convertito in MHTML con l’aiuto di 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);