Hantera Outlook-kontakter

Den här artikeln täcker fristående Outlook MapiContact poster sparade som MSG eller vCard (VCF). För det formatneutrala VCardContact klass som läser och skriver vCard‑filer direkt, se Arbeta med vCard (VCF)-filer. För att lagra och läsa kontakter i en PST, se Hantera kontakter i PST-filer.

Precis som MapiMessage låter Aspose.Email dig skapa Outlook‑kontakter. MapiContact klassen tillhandahåller alla kontaktrelaterade egenskaper som krävs för att skapa en Outlook‑kontakt. Denna artikel visar hur man skapar, sparar och läser en Outlook‑kontakt med hjälp av MapiContact klass.

Skapa och spara Outlook‑kontakt

För att skapa en kontakt och spara den på disk:

  1. Instansiera ett nytt objekt av MapiContact klass.
  2. Ange kontaktens egenskapsinformation.
  3. Lägg till fotodata (om någon).
  4. Spara kontakten som MSG- eller VCard-format.

Följande kodsnutt visar hur man skapar och sparar en Outlook‑kontakt.

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

Spara MAPI‑distributionslistor till VCF‑filer

Kodexemplet nedan visar hur du sparar en distributionslista till en VCF‑fil med flera kontakter:

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

Konvertera VCF‑filer med flera kontakter till MapiDistributionList

Aspose.Email stöder konvertering av VCF‑filer med flera kontakter till MapiDistributionList objekt, vilket gör det enkelt att hantera och importera flera kontakter direkt i dina applikationer. Denna funktion är tillgänglig via följande statiska metoder i MapiDistributionList klass:

Kodexemplet nedan demonstrerar hur du använder denna funktion:

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

Spara kontakter i VCF-format

För att spara kontakten i VCF version 3-format, använd VCardVersion enumeration för att sätta VCardSaveOptions.Version egenskap. Följande exempel kod demonstrerar användningen av VCardVersion enumeration för att spara kontakten i VCF version 3-format:

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

Läsa MAPI‑kontakter

Den MapiContact klassen kan användas för att ladda både Outlook MSG- och VCard‑formatkontakter. Följande kodsnutt visar hur du laddar Outlook‑kontakter sparade som MSG och VCF i en MapiContact.

Ladda kontakter från MSG-filer

Följande kodsnutt visar hur du laddar kontakter från MSG.

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

Console.WriteLine(contact.NameInfo.DisplayName);

Ladda kontakter från VCard-filer

Följande kodsnutt visar hur du laddar en vCard‑fil i en MapiContact med hjälp av FromVCard metod. För att ladda en vCard i en VCardContact istället, se Arbeta med vCard (VCF)-filer.

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

Ladda MAPI‑kontakter från vCard med anpassade alternativ

För att ge mer flexibilitet vid konvertering av vCard‑filer (.vcf) till MAPI‑kontakter, erbjuder Aspose.Email för .NET en överlagring MapiContact.FromVCard(string filePath, VCardLoadOptions options) metod som accepterar en VCardLoadOptions objekt. Det ger förbättrad kontroll över hur vCard‑filer tolkas – särskilt vid arbete med olika vCard‑format, kodningar eller avancerade parsingscenarier.

Följande kodexempel visar hur du laddar en .vcf‑kontaktdfil i en MapiContact objekt med överlagringen som accepterar VCardLoadOptions. Den laddade kontakten kan sedan användas i PST-filer, MSG‑export eller andra Outlook‑kompatibla format.

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

Ladda kontakter från VCard med specificerad kodning

Kodningen för en vCard‑fil specificeras via PreferredEncoding egenskap hos VCardLoadOptions klass. Följande kodsnutt visar hur du laddar kontakter från VCard med angiven kodning.

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

Spara VCard‑filer med utökade fält

Den UseExtensions egenskapen låter dig styra om utökade fält får användas vid sparande av vCard‑filer. När den är satt till true (standard) tillåts extensions, vilket ger kompatibilitet med anpassade fält och extra kontaktinformation.

Följande kodexempel visar hur du inaktiverar de utökade fälten när du sparar en kontakt:

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

var options = new VCardSaveOptions
{
    UseExtensions = false
};

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

Arbeta med vCard‑filer direkt

Läsa och skriva vCard (VCF)-filer med det formatneutrala VCardContact klass — laddning av enskilda eller flera kontakter, val av textkodning, sparande med en specifik vCard‑version, och asynkron laddning — täcks i en dedikerad artikel: Arbeta med vCard (VCF)-filer.

Rendera kontaktinformation till MHTML

Outlook‑kontakt kan konverteras till MHTML med Aspose.Email API. Detta exempel visar hur en VCard laddas in i MapiContact och sedan konverteras till MHTML med hjälp av 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);

Se även