Работа с контактами Outlook
Создание, сохранение и чтение контактов
Как и MapiMessage, Aspose.Email позволяет создавать контакты Outlook. Класс MapiContact предоставляет все необходимые свойства, связанные с контактами, для создания контакта Outlook. В данной статье показано, как создать, сохранить и прочитать контакт Outlook с помощью класса MapiContact.
Создание и сохранение контакта Outlook
Чтобы создать контакт и сохранить его на диск:
- Создайте новый объект класса MapiContact.
- Введите информацию о свойствах контакта.
- Добавьте данные о фотографии (если есть).
- Сохраните контакт в формате MSG или VCard.
Следующий код показывает, как создать и сохранить контакт Outlook.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// 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:
// конвертировать объект `msg` в объект `MapiMessage`
var dlist = (MapiDistributionList)msg.ToMapiMessageItem();
// сохранить список рассылки
var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
dlist.Save("distribution_list.vcf", options);
Сохранение контакта в формате VCF версии 3
Чтобы сохранить контакт в формате VCF версии 3, используйте перечисление VCardVersion, чтобы установить VCardSaveOptions.Version свойство. Следующий пример кода демонстрирует использование VCardVersion перечисления для сохранения контакта в формате VCF версии 3:
Чтение MapiContact
Класс MapiContact может использоваться для загрузки контактов как в формате MSG, так и в формате VCard. Следующий код показывает, как загрузить контакты Outlook, сохраненные как MSG и VCF, в MapiContact.
Загрузка контакта из MSG
Следующий код показывает, как загрузить контакты из MSG.
Загрузка контакта из VCard
Следующий код показывает, как загрузить контакты из VCard.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
var vcfTest = VCardContact.Load(dataDir + "Contact.vcf"); | |
MapiContact contact = MapiContact.FromVCard(dataDir + "Contact.vcf"); |
Загрузка контакта из VCard с заданной кодировкой
Следующий код показывает, как загрузить контакты из VCard с заданной кодировкой.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
var contactReadFromFile = MapiContact.FromVCard(dataDir + @"Contact.vcf", Encoding.UTF8); |
Сохранение элементов VCard контактов с заданной кодировкой
Настройте поведение сохранения при работе с VCard файлами, используя класс VCardSaveOptions. Свойство 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. Это можно сделать с помощью следующих методов и шагов:
// Проверяет, содержит ли источник потока VCard несколько контактов.
VCardContact.IsMultiContacts(Stream stream)
// Загружает список всех контактов из файла VCard.
VCardContact.LoadAsMultiple(string filePath, Encoding encoding)
// Загружает список всех контактов из потока VCard.
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);
}
}
Отображение информации о контакте в MHTML
Контакт Outlook может быть преобразован в MHTML с помощью API Aspose.Email. Этот пример показывает, как VCard загружается в MapiContact и затем преобразуется в MHTML с помощью API MailMessage.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
string dataDir = RunExamples.GetDataDir_Outlook(); | |
//Load VCF Contact and convert to MailMessage for rendering to MHTML | |
MapiContact contact = MapiContact.FromVCard(dataDir + "Contact.vcf"); | |
MemoryStream ms = new MemoryStream(); | |
contact.Save(ms, ContactSaveFormat.Msg); | |
ms.Position = 0; | |
MapiMessage msg = MapiMessage.FromStream(ms); | |
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(dataDir + "ContactMhtml_out.mhtml", mhtSaveOptions); |