Управление контактами Outlook
Как и MapiMessage, Aspose.Email позволяет создавать контакты Outlook. The MapiContact класс предоставляет все свойства, связанные с контактами, необходимые для создания контакта Outlook. В этой статье показано, как создать, сохранить и прочитать контакт Outlook с помощью MapiContact класс.
Создание и сохранение контакта Outlook
Чтобы создать контакт и сохранить его на диск:
- Создайте новый объект класса MapiContact класс.
- Введите информацию о свойствах контакта.
- Добавьте данные фото (при наличии).
- Сохраните контакт в формате 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 класс:
- static MapiDistributionList FromVCF(string filePath)
- static MapiDistributionList FromVCF(Stream stream)
Ниже пример кода демонстрирует, как использовать эту функцию:
// 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‑контактов
Этот 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‑файлов с расширенными полями
Этот 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
Этот 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 с помощью Aspose.Email API. Этот пример показывает, как 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);