Verwaltung von Outlook‑Kontakten

Wie MapiMessage ermöglicht Aspose.Email das Erstellen von Outlook‑Kontakten. Die MapiContact Klasse bietet alle kontaktbezogenen Eigenschaften, die zum Erstellen eines Outlook‑Kontakts erforderlich sind. Dieser Artikel zeigt, wie man einen Outlook‑Kontakt erstellt, speichert und liest, indem man die MapiContact Klasse.

Outlook‑Kontakt erstellen und speichern

Um einen Kontakt zu erstellen und auf der Festplatte zu speichern:

  1. Instanziieren Sie ein neues Objekt der MapiContact Klasse.
  2. Kontakt‑Eigenschaftsinformationen eingeben.
  3. Fotodaten hinzufügen (falls vorhanden).
  4. Speichern Sie den Kontakt im MSG- oder VCard-Format.

Das folgende Code‑Snippet zeigt, wie Sie einen Outlook‑Kontakt erstellen und speichern.

MAPI‑Verteilerlisten in VCF‑Dateien speichern

Das folgende Codebeispiel zeigt, wie man eine Verteilerliste in einer Mehrfach‑Kontakt‑VCF‑Datei speichert:

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

Mehrfach‑Kontakt‑VCF‑Dateien in MapiDistributionList konvertieren

Aspose.Email unterstützt die Konvertierung von Mehrfach‑Kontakt‑VCF‑Dateien in MapiDistributionList Objekte, was das Verwalten und Importieren mehrerer Kontakte direkt in Ihre Anwendungen erleichtert. Diese Funktion ist über die folgenden statischen Methoden in der MapiDistributionList Klasse:

Das folgende Codebeispiel demonstriert die Verwendung dieser Funktion:

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

Kontakte im VCF‑Format speichern

Um den Kontakt im VCF‑Version‑3‑Format zu speichern, verwenden Sie die VCardVersion enumerable, um die VCardSaveOptions.Version Eigenschaft. Der folgende Beispielcode demonstriert die Verwendung von VCardVersion enumerable, um das Kontakt‑VCF‑Version‑3‑Format zu speichern:

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

MAPI‑Kontakte lesen

Die MapiContact Klasse kann verwendet werden, um sowohl Outlook‑MSG- als auch VCard‑Format‑Kontakte zu laden. Der folgende Codeausschnitt zeigt, wie Sie Outlook‑Kontakte, die als MSG und VCF gespeichert wurden, in ein MapiContact.

Kontakte aus MSG‑Dateien laden

Der folgende Codeausschnitt zeigt, wie Sie Kontakte aus MSG laden.

Kontakte aus VCards laden

Der folgende Codeausschnitt zeigt, wie Sie Kontakte aus einer VCard laden.

MAPI‑Kontakte aus vCard mit benutzerdefinierten Optionen laden

Um mehr Flexibilität beim Konvertieren von vCard‑(.vcf‑)Dateien in MAPI‑Kontakte zu bieten, stellt Aspose.Email für .NET eine Überladung bereit MapiContact.FromVCard(string filePath, VCardLoadOptions options) Methode, die ein VCardLoadOptions Objekt. Es bietet verbesserte Kontrolle darüber, wie vCard‑Dateien interpretiert werden – insbesondere beim Arbeiten mit verschiedenen vCard‑Formaten, Kodierungen oder fortgeschrittenen Parsing‑Szenarien.

Das folgende Codebeispiel zeigt, wie Sie eine .vcf‑Kontaktdatei in ein MapiContact Objekt unter Verwendung der Überladung, die akzeptiert VCardLoadOptions. Der geladene Kontakt kann dann in PST‑Dateien, MSG‑Exporten oder anderen Outlook‑kompatiblen Formaten verwendet werden.

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

Kontakte aus VCards mit spezifizierter Kodierung laden

Der folgende Codeausschnitt zeigt, wie Sie Kontakte aus einer VCard mit der angegebenen Kodierung laden.

vCard‑Kontakt‑Elemente mit festgelegter Kodierung speichern

Passen Sie das Speicherverhalten beim Arbeiten mit vCard‑Dateien mithilfe der VCardSaveOptions Klasse. Die PreferredTextEncoding Eigenschaft der Klasse gibt die beim Speichern von vCard‑Kontakt­elementen zu verwendende Kodierung an.

Das folgende Codebeispiel zeigt, wie Sie diese Eigenschaft in Ihrem Projekt implementieren:

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

VCard‑Dateien mit erweiterten Feldern speichern

Die UseExtensions Eigenschaft ermöglicht es, zu steuern, ob erweiterte Felder beim Speichern von vCard‑Dateien verwendet werden können. Bei true (Standard) sind Erweiterungen erlaubt, was die Kompatibilität mit benutzerdefinierten Feldern und zusätzlichen Kontaktinformationen bietet.

Mehrere Kontakte im VCard‑Format lesen

Unsere Bibliothek ermöglicht es, die Liste aller Kontakte aus einer VCard zu erhalten. Dies kann mit den folgenden Methoden und Schritten erfolgen:

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

Der folgende Codeausschnitt zeigt, wie VCard‑Dateien, die mehrere Kontakte enthalten, verarbeitet werden können:

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

vCard‑Kontakte asynchron laden

Die VCardContact Klasse in Aspose.Email für .NET unterstützt das asynchrone Laden von vCard‑Dateien. Damit können Anwendungen effizient einzelne oder mehrere Kontakte aus .vcf‑Dateien oder Streams lesen, ohne den Hauptthread zu blockieren – ideal für moderne Desktop-, Web- oder Mobile‑Anwendungen, die mit großen Kontaktlisten arbeiten. Die folgenden Methoden dieser Klasse können die Aufgabe erledigen:

  • LoadAsync

  • LoadAsMultipleAsync

Das folgende Codebeispiel zeigt, wie Sie asynchron mehrere vCard‑Kontakte aus einer .vcf‑Datei mit VCardContact.LoadAsMultipleAsync laden. Die geladenen Kontakte werden in einer Schleife verarbeitet, wobei jeder Kontaktname in die Konsole ausgegeben wird. Der asynchrone Ansatz sorgt dafür, dass die Anwendung reaktionsfähig bleibt, selbst beim Lesen großer Dateien.

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

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

Kontaktinformationen nach MHTML rendern

Outlook‑Kontakt kann mit der Aspose.Email‑API in MHTML konvertiert werden. Dieses Beispiel zeigt, wie eine VCard in MapiContact und dann mit Hilfe von 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);