Керування контактами Outlook

У цій статті розглядаються окремі Outlook MapiContact елементи, збережені як MSG або vCard (VCF). Для форматово-нейтрального VCardContact клас, який безпосередньо читає та записує файли vCard, дивіться Робота з файлами vCard (VCF). Щоб зберігати та читати контакти всередині PST, дивіться Керування контактами у PST‑файлах.

Подібно до MapiMessage, Aspose.Email дозволяє створювати контакти Outlook. MapiContact клас надає всі властивості, пов’язані з контактами, необхідні для створення контакту Outlook. У цій статті показано, як створити, зберегти та читати контакт Outlook за допомогою MapiContact клас.

Створити та зберегти Outlook контакт

Щоб створити контакт та зберегти його на диск:

  1. Створіть новий об’єкт MapiContact клас.
  2. Введіть інформацію про властивості контакту.
  3. Додати дані фотографії (за наявності).
  4. Збережіть контакт у форматі MSG або VCard.

Нижче наведено фрагмент коду, який показує, як створити та зберегти Outlook контакт.

// 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‑списки розсилки у VCF‑файли

Нижчий приклад коду демонструє, як зберегти список розсилки у багатоконтактний VCF‑файл:

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

Конвертувати багатоконтактні VCF‑файли у MapiDistributionList

Aspose.Email підтримує конвертацію багатоконтактних VCF‑файлів у MapiDistributionList об’єктів, що спрощує керування та імпорт кількох контактів безпосередньо у ваші застосунки. Ця функція доступна через наступні статичні методи в MapiDistributionList клас:

Нижчий приклад коду демонструє, як використати цю функцію:

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

Збереження контактів у форматі VCF

Щоб зберегти контакт у форматі VCF версії 3, використайте VCardVersion перерахування для встановлення VCardSaveOptions.Version властивість. Нижче наведено приклад коду, який демонструє використання VCardVersion перерахування для збереження контакту у форматі VCF версії 3:

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

Читання MAPI‑контактів

The MapiContact клас можна використовувати для завантаження контактів у форматах Outlook MSG та VCard. Наступний фрагмент коду показує, як завантажити контакти Outlook, збережені як MSG та VCF, у MapiContact.

Завантажити контакти з MSG‑файлів

Наступний фрагмент коду показує, як завантажити контакти з MSG.

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

Console.WriteLine(contact.NameInfo.DisplayName);

Завантажити контакти з VCard

Наступний код показує, як завантажити файл vCard у MapiContact використовуючи FromVCard метод. Щоб завантажити vCard у VCardContact замість цього, дивіться Робота з файлами vCard (VCF).

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

Завантажити MAPI‑контакти з vCard з користувацькими параметрами

Для забезпечення більшої гнучкості при конвертації файлів vCard (.vcf) у MAPI‑контакти Aspose.Email для .NET надає перевантаження MapiContact.FromVCard(string filePath, VCardLoadOptions options) метод, що приймає VCardLoadOptions об’єкт. Це забезпечує покращений контроль над тим, як інтерпретуються файли vCard — особливо при роботі з різними форматами vCard, кодуваннями або складними сценаріями розбору.

Наступний приклад коду демонструє, як завантажити файл контакту .vcf у MapiContact об’єкт, використовуючи перевантаження, яке приймає VCardLoadOptions. Завантажений контакт потім можна використати у PST‑файлах, експорті MSG або інших сумісних з Outlook форматах.

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

Завантажити контакти з VCard з вказаним кодуванням

Кодування файлу vCard задається через PreferredEncoding властивість VCardLoadOptions клас. Наведений код показує, як завантажити контакти з VCard з вказаним кодуванням.

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

Зберігати VCard‑файли з розширеними полями

The UseExtensions властивість дозволяє контролювати, чи можна використовувати розширені поля під час збереження VCard‑файлів. Якщо встановлено true (за замовчуванням), розширення дозволені, забезпечуючи сумісність із користувацькими полями та додатковою інформацією про контакти.

Наступний приклад коду показує, як вимкнути розширені поля під час збереження контакту:

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

var options = new VCardSaveOptions
{
    UseExtensions = false
};

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

Робота з файлами vCard безпосередньо

Читання та запис файлів vCard (VCF) за допомогою форматово-нейтрального VCardContact клас — завантаження одного або декількох контактів, вибір кодування тексту, збереження у конкретній версії vCard і асинхронне завантаження — розкрите в окремій статті: Робота з файлами vCard (VCF).

Відобразити інформацію контакту у MHTML

Контакт Outlook можна конвертувати у MHTML за допомогою API Aspose.Email. Цей приклад показує, як VCard завантажується у MapiContact а потім конвертовано у MHTML за допомогою 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);

Див. також