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

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

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

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

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

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

Зберегти MAPI‑списки розсилки у VCF‑файли

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

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

Конвертувати багатоконтактні 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.

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

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

Завантажити 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 з вказаним кодуванням.

Зберігати елементи контактів VCard із заданим кодуванням

Налаштуйте поведінку збереження під час роботи з VCard‑файлами за допомогою VCardSaveOptions клас. The PreferredTextEncoding властивість класу, яка визначатиме кодування, що використовується при збереженні елементів контакту VCard.

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

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

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

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

Читати кілька контактів у форматі VCard

Наша бібліотека дозволяє отримати список усіх контактів з VCard. Це можна зробити за допомогою наступних методів та кроків:

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

Наступний фрагмент коду демонструє, як обробляти VCard‑файли, що містять кілька контактів:

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

Асинхронне завантаження vCard‑контактів

The VCardContact клас у Aspose.Email для .NET підтримує асинхронне завантаження vCard‑файлів. Це дозволяє застосункам ефективно читати окремі або кілька контактів з .vcf‑файлів або потоків без блокування головного потоку — ідеально для сучасних настільних, веб‑ чи мобільних застосунків, що працюють з великими списками контактів. Наступні методи цього класу можуть виконати це завдання:

  • LoadAsync

  • LoadAsMultipleAsync

Наступний приклад коду демонструє, як асинхронно завантажити кілька vCard‑контактів з файлу .vcf за допомогою VCardContact.LoadAsMultipleAsync. Завантажені контакти оброблюються у циклі, виводячи ім’я контакту у консоль. Асинхронний підхід забезпечує, що застосунок залишатиметься реагуючим, навіть під час читання великих файлів.

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

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

Відобразити інформацію контакту у 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);