Verwaltung von Outlook‑Kontakten

Dieser Artikel behandelt eigenständige Outlook MapiContact Elemente, die als MSG oder vCard (VCF) gespeichert wurden. Für das formatneutrale VCardContact Klasse, die vCard‑Dateien direkt liest und schreibt, siehe Arbeiten mit vCard (VCF)-Dateien. Um Kontakte in einer PST zu speichern und zu lesen, siehe Verwalten von Kontakten in PST‑Dateien.

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.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

MapiContact contact = new MapiContact();
contact.NameInfo = new MapiContactNamePropertySet("Bertha", "A.", "Buell");
contact.ProfessionalInfo = new MapiContactProfessionalPropertySet("Awthentikz", "Social work assistant");
contact.PersonalInfo.PersonalHomePage = "B2BTies.com";
contact.PhysicalAddresses.WorkAddress.Address = "Im Astenfeld 59 8580 EDELSCHROTT";
contact.ElectronicAddresses.Email1 = new MapiContactElectronicAddress("Experwas", "SMTP", "BerthaABuell@armyspy.com");
contact.Telephones = new MapiContactTelephonePropertySet("06605045265");
contact.PersonalInfo.Children = new string[] { "child1", "child2", "child3" };
contact.Categories = new string[] { "category1", "category2", "category3" };
contact.Mileage = "Some test mileage";
contact.Billing = "Test billing information";
contact.OtherFields.Journal = true;
contact.OtherFields.Private = true;
contact.OtherFields.ReminderTime = new DateTime(2014, 1, 1, 0, 0, 55);
contact.OtherFields.ReminderTopic = "Test topic";
contact.OtherFields.UserField1 = "ContactUserField1";
contact.OtherFields.UserField2 = "ContactUserField2";
contact.OtherFields.UserField3 = "ContactUserField3";
contact.OtherFields.UserField4 = "ContactUserField4";

// Add a photo
using (FileStream fs = File.OpenRead(dataDir + "Desert.jpg"))
{
    byte[] buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    contact.Photo = new MapiContactPhoto(buffer,
        MapiContactPhotoImageFormat.Jpeg);
}
// Save the Contact in MSG format
contact.Save(dataDir + "MapiContact_out.msg",ContactSaveFormat.Msg);

// Save the Contact in VCF format
contact.Save(dataDir + "MapiContact_out.vcf", ContactSaveFormat.VCard);

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 `MapiDistributionList` 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 Aufzählungs‑Element, um das VCardSaveOptions.Version Eigenschaft. Der folgende Beispielcode demonstriert die Verwendung von VCardVersion Aufzählungs‑Element zum Speichern des Kontakts im VCF‑Format Version 3:

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.

MapiMessage msg = MapiMessage.FromFile(dataDir + "Contact.msg");
MapiContact contact = (MapiContact)msg.ToMapiMessageItem();

Console.WriteLine(contact.NameInfo.DisplayName);

Kontakte aus VCards laden

Das nachfolgende Code‑Snippet zeigt, wie man eine vCard‑Datei in ein MapiContact unter Verwendung der FromVCard Methode. Um ein vCard in ein VCardContact stattdessen, siehe Arbeiten mit vCard (VCF)-Dateien.

MapiContact contact = MapiContact.FromVCard(dataDir + "Contact.vcf");

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

Die Codierung einer vCard‑Datei wird über das PreferredEncoding Eigenschaft des VCardLoadOptions Klasse. Das nachfolgende Code‑Snippet zeigt, wie man Kontakte aus VCard mit der angegebenen Codierung lädt.

var loadOptions = new VCardLoadOptions { PreferredEncoding = Encoding.UTF8 };
var contactReadFromFile = MapiContact.FromVCard(dataDir + @"Contact.vcf", loadOptions);

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.

Das folgende Code‑Beispiel zeigt, wie man beim Speichern eines Kontakts die erweiterten Felder deaktiviert:

var contact = MapiContact.FromVCard("contact.vcf");

var options = new VCardSaveOptions
{
    UseExtensions = false
};

contact.Save("contact_out.vcf", options);

Direktes Arbeiten mit vCard‑Dateien

Lesen und Schreiben von vCard‑Dateien (VCF) mit dem formatneutralen VCardContact Klasse – Laden einzelner oder mehrerer Kontakte, Auswahl der Textcodierung, Speichern mit einer bestimmten vCard‑Version und asynchrones Laden – wird in einem eigenen Artikel behandelt: Arbeiten mit vCard (VCF)-Dateien.

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

Siehe auch