Контакты являются неотъемлемой частью любого почтового клиента, поскольку они облегчают пользователю запоминание всех его контактов, подобно контактам на вашем смартфоне. Контакты Outlook хранят много информации о человеке, например его имя, адрес, контактный номер, адрес электронной почты и т. д. Эти контакты можно хранить в форматах MSG и VCF. Вы можете столкнуться с ситуациями, когда вам нужно программно создавать или изменять контакты MSG или VCF. Для этого в этой статье вы научитесь работать с контактами MSG и VCF, используя C++.

C++ API для работы с контактами MSG и VCF

Aspose.Email для C++ — это собственная библиотека C++ для создания, обработки и отправки электронных писем, не требующая установки Microsoft Outlook. API также поддерживает работу с контактами и календарями. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.

PM> Install-Package Aspose.Email.Cpp

Создание контактов MSG и VCF

В этом разделе вы узнаете, как создать контакт Outlook и сохранить его в формате MSG и VCF. Ниже приведены шаги для достижения этого.

В следующем примере кода показано, как создать контакт Outlook и сохранить его в формате MSG и VCF с помощью C++.

// Создайте экземпляр класса MapiContact для представления контакта
System::SharedPtr<MapiContact> contact = System::MakeObject<MapiContact>();

// Установить свойства контакта
System::SharedPtr<MapiContact> contact = System::MakeObject<MapiContact>();
contact->set_NameInfo(System::MakeObject<MapiContactNamePropertySet>(u"John", u"A.", u"Doe"));
contact->set_ProfessionalInfo(System::MakeObject<MapiContactProfessionalPropertySet>(u"Awthentikz", u"Social work assistant"));
contact->get_PersonalInfo()->set_PersonalHomePage(u"aspose.com");
contact->get_PhysicalAddresses()->get_HomeAddress()->set_Address(u"Im Astenfeld 59 8580 EDELSCHROTT");
contact->get_ElectronicAddresses()->set_Email1(System::MakeObject<MapiContactElectronicAddress>(u"test", u"SMTP", u"JohnADoe@test.com"));
contact->set_Telephones(System::MakeObject<MapiContactTelephonePropertySet>(u"06605045265"));
contact->get_PersonalInfo()->set_Children(System::MakeArray<System::String>({ u"child1", u"child2", u"child3" }));
contact->set_Categories(System::MakeArray<System::String>({ u"category1", u"category2", u"category3" }));
contact->set_Mileage(u"Some test mileage");
contact->set_Billing(u"Test billing information");
contact->get_OtherFields()->set_ReminderTime(System::DateTime(2022, 1, 1, 0, 0, 55));
contact->get_OtherFields()->set_UserField1(u"ContactUserField1");
contact->get_OtherFields()->set_UserField2(u"ContactUserField2");
contact->get_OtherFields()->set_UserField3(u"ContactUserField3");
contact->get_OtherFields()->set_UserField4(u"ContactUserField4");

// Добавить фото
{
    System::SharedPtr<System::IO::FileStream> fs = System::IO::File::OpenRead(u"SourceDirectory\\Desert.jpg");
    System::ArrayPtr<uint8_t> buffer = System::MakeArray<uint8_t>(fs->get_Length(), 0);
    fs->Read(buffer, 0, buffer->get_Length());
    contact->set_Photo(System::MakeObject<MapiContactPhoto>(buffer, Aspose::Email::Mapi::MapiContactPhotoImageFormat::Jpeg));
}

// Сохраните контакт в формате MSG
contact->Save(u"OutputDirectory\\MapiContact_out.msg", Aspose::Email::Mapi::ContactSaveFormat::Msg);

// Сохраните контакт в формате VCF
contact->Save(u"OutputDirectory\\MapiContact_out.vcf", Aspose::Email::Mapi::ContactSaveFormat::VCard);
Контакт, сгенерированный кодом примера

Контакт, сгенерированный кодом примера

Читать контакты MSG и VCF

Aspose.Email для C++ поддерживает чтение контактов в форматах MSG и VCF. Здесь вы увидите, как открывать контакты MSG и VCF с помощью C++.

Читать контакт MSG

Ниже приведены шаги для чтения контакта MSG.

Ниже приведен пример кода для чтения контакта MSG с помощью C++.

// Загрузите файл контактов
System::SharedPtr<MapiMessage> msg = MapiMessage::FromFile(u"SourceDirectory\\Contact.msg");
System::SharedPtr<MapiContact> mapiContact = System::DynamicCast<Aspose::Email::Mapi::MapiContact>(msg->ToMapiMessageItem());

// Показать контактную информацию
System::Console::WriteLine(mapiContact->get_NameInfo()->get_DisplayName());
System::Console::WriteLine(mapiContact1->get_PhysicalAddresses()->get_HomeAddress()->get_Address());
System::Console::WriteLine(mapiContact->get_Telephones()->get_PrimaryTelephoneNumber());
System::Console::WriteLine(mapiContact->get_ElectronicAddresses()->get_Email1());

Открыть контакт VCF

Чтобы прочитать контакт VCF, просто загрузите контакт с помощью метода MapiContact::FromVCard. В следующем примере кода показано, как прочитать контакт VCF с помощью C++.

// Загрузите файл контактов
System::SharedPtr<MapiContact> mapiContact = MapiContact::FromVCard(u"SourceDirectory\\Contact.vcf");

// Показать контактную информацию
System::Console::WriteLine(mapiContact->get_NameInfo()->get_DisplayName());
System::Console::WriteLine(mapiContact1->get_PhysicalAddresses()->get_HomeAddress()->get_Address());
System::Console::WriteLine(mapiContact->get_Telephones()->get_PrimaryTelephoneNumber());
System::Console::WriteLine(mapiContact->get_ElectronicAddresses()->get_Email1());

Изменить контакты MSG и VCF

Чтобы изменить контакт MSG/VCF, откройте контакт, как показано в предыдущем разделе, а затем измените его свойства. Ниже приведены шаги для изменения контактов.

В следующем примере кода показано, как изменить контакты MSG/VCF с помощью C++.

// Загрузите файл контактов
System::SharedPtr<MapiMessage> msg = MapiMessage::FromFile(u"SourceDirectory\\Contact.msg");
System::SharedPtr<MapiContact> mapiContact = System::DynamicCast<Aspose::Email::Mapi::MapiContact>(msg->ToMapiMessageItem());

// Изменить свойства контакта
mapiContact->set_NameInfo(System::MakeObject<MapiContactNamePropertySet>(u"John", u"A.", u"Doe"));

// Сохранить контакт
mapiContact->Save(u"OutputDirectory\\MapiContact_out.msg", Aspose::Email::Mapi::ContactSaveFormat::Msg);

Получить бесплатную лицензию

Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.

Живая демонстрация

Вывод

В этой статье вы узнали, как работать с контактами MSG и VCF с помощью C++. В частности, вы узнали, как создавать, читать и изменять контакты с помощью Aspose.Email для C++ API. API предоставляет множество дополнительных функций для автоматизации ваших задач, связанных с электронной почтой. Вы можете подробно изучить API, посетив официальную документацию. Если у вас есть какие-либо вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.

Смотрите также