Beheer van Outlook‑contactpersonen

Dit artikel behandelt zelfstandige Outlook MapiContact items opgeslagen als MSG of vCard (VCF). Voor de formaat‑neutrale VCardContact klasse die vCard‑bestanden direct leest en schrijft, zie Werken met vCard (VCF)-bestanden. Om contactpersonen in een PST op te slaan en te lezen, zie Contacten beheren in PST‑bestanden.

Net als MapiMessage stelt Aspose.Email u in staat Outlook‑contacten te maken. De MapiContact klasse biedt alle contactgerelateerde eigenschappen die nodig zijn om een Outlook‑contact te creëren. Dit artikel laat zien hoe u een Outlook‑contact maakt, opslaat en leest met behulp van de MapiContact klasse.

Een Outlook‑contact maken en opslaan

Om een contact te maken en op schijf op te slaan:

  1. Instantieer een nieuw object van de MapiContact klasse.
  2. Voer contacteigenschapsinformatie in.
  3. Voeg fotogegevens toe (indien aanwezig).
  4. Sla het contact op in MSG- of VCard-formaat.

Het volgende codefragment laat zien hoe u een Outlook‑contact maakt en opslaat.

// 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‑distributielijsten opslaan in VCF‑bestanden

Het onderstaande codevoorbeeld toont hoe u een distributielijst kunt opslaan in een VCF‑bestand met meerdere contactpersonen:

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

Meerdere‑contact VCF‑bestanden converteren naar MapiDistributionList

Aspose.Email ondersteunt de conversie van meerdere‑contact VCF‑bestanden naar MapiDistributionList objecten, waardoor het eenvoudig is om meerdere contactpersonen direct in uw applicaties te beheren en importeren. Deze functie is toegankelijk via de volgende statische methoden in de MapiDistributionList klasse:

Het onderstaande codevoorbeeld toont hoe u deze functie kunt gebruiken:

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

Contacten opslaan in VCF‑formaat

Om het contact op te slaan in VCF versie 3 formaat, gebruik de VCardVersion enumeratie om de VCardSaveOptions.Version eigenschap. De volgende voorbeeldcode demonstreert het gebruik van VCardVersion enumeratie om het contact VCF‑versie‑3‑formaat op te slaan:

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

MAPI‑contacten lezen

De MapiContact klasse kan worden gebruikt om zowel Outlook MSG‑ als VCard‑formaatcontacten te laden. Het volgende codefragment laat zien hoe u Outlook‑contacten, opgeslagen als MSG en VCF, kunt laden in een MapiContact.

Contacten laden uit MSG‑bestanden

Het volgende codefragment laat zien hoe u contactpersonen uit een MSG kunt laden.

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

Console.WriteLine(contact.NameInfo.DisplayName);

Contacten laden vanuit VCards

Het volgende code‑fragment toont hoe u een vCard‑bestand laadt in een MapiContact met behulp van de FromVCard methode. Om een vCard te laden in een VCardContact in plaats daarvan, zie Werken met vCard (VCF)-bestanden.

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

MAPI‑contacten laden uit vCard met aangepaste opties

Om meer flexibiliteit te bieden bij het converteren van vCard‑bestanden (.vcf) naar MAPI‑contacten, biedt Aspose.Email voor .NET een overload MapiContact.FromVCard(string filePath, VCardLoadOptions options) methode die een VCardLoadOptions object. Het biedt verbeterde controle over hoe vCard‑bestanden worden geïnterpreteerd – vooral bij het werken met verschillende vCard‑formaten, coderingen of geavanceerde parse‑scenario’s.

Het onderstaande codevoorbeeld toont hoe u een .vcf‑contactbestand kunt laden in een MapiContact object met de overload die accepteert VCardLoadOptions. Het geladen contact kan vervolgens worden gebruikt binnen PST‑bestanden, MSG‑export of andere Outlook‑compatibele formaten.

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

Contacten laden vanuit VCards met opgegeven codering

De codering van een vCard‑bestand wordt gespecificeerd via de PreferredEncoding eigenschap van de VCardLoadOptions klasse. Het volgende code‑fragment toont hoe u contactpersonen laadt uit VCard met de opgegeven codering.

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

VCard‑bestanden opslaan met uitgebreide velden

De UseExtensions eigenschap stelt u in staat te bepalen of uitgebreide velden mogen worden gebruikt bij het opslaan van vCard‑bestanden. Wanneer ingesteld op true (standaard), zijn extensies toegestaan, waardoor compatibiliteit met aangepaste velden en extra contactinformatie wordt geboden.

Het volgende code‑voorbeeld toont hoe u de uitgebreide velden uitschakelt bij het opslaan van een contact:

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

var options = new VCardSaveOptions
{
    UseExtensions = false
};

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

Direct werken met vCard‑bestanden

Lezen en schrijven van vCard (VCF) bestanden met de formaat‑neutrale VCardContact klasse — laden van één of meerdere contactpersonen, kiezen van tekencodering, opslaan met een specifieke vCard‑versie, en asynchroon laden — wordt behandeld in een afzonderlijk artikel: Werken met vCard (VCF)-bestanden.

Contactinformatie renderen naar MHTML

Outlook-contact kan worden geconverteerd naar MHTML met de Aspose.Email API. Dit voorbeeld laat zien hoe een VCard wordt geladen in MapiContact en vervolgens geconverteerd naar MHTML met behulp van 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);

Zie ook