Работа с контактами на Exchange Server

Получение контактов с помощью EWS

Aspose.Email предоставляет класс EWSClient для подключения к Microsoft Exchange Server с использованием Exchange Web Services. Следующие фрагменты кода используют Exchange Web Services для чтения всех контактов. Следующий фрагмент кода показывает вам, как получить контакты с EWS.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of IEWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// List all the contacts
System::ArrayPtr<System::SharedPtr<Contact>> contacts = client->GetContacts(client->get_MailboxInfo()->get_ContactsUri());
for (System::SharedPtr<Contact> contact : contacts)
{
System::SharedPtr<MapiContact> mapiContact = Contact::to_MapiContact(contact);
// Display name and email address
System::Console::WriteLine(System::String(u"Name: ") + mapiContact->get_NameInfo()->get_DisplayName() + u", Email Address: " + mapiContact->get_ElectronicAddresses()->get_Email1());
}

Разрешить контакты с помощью имени контакта

Следующий фрагмент кода показывает вам, как получить контакты, используя имя контакта.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of IEWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// List all the contacts
System::ArrayPtr<System::SharedPtr<Contact>> contacts = client->ResolveContacts(u"Changed Name", Aspose::Email::Clients::Exchange::WebService::ExchangeListContactsOptions::FetchPhoto);
for (System::SharedPtr<Contact> contact : contacts)
{
System::SharedPtr<MapiContact> mapiContact = Contact::to_MapiContact(contact);
// Display name and email address
System::Console::WriteLine(System::String(u"Name: ") + mapiContact->get_NameInfo()->get_DisplayName() + u", Email Address: " + mapiContact->get_ElectronicAddresses()->get_Email1());
}

Определение формата заметок контакта

Contact->get_NotesFormat указывает тип формата текста заметок контактов, определенный перечислением TextFormat.

Получение контакта по Id

Конкретный контакт может быть извлечен с сервера, используя его идентификатор контакта, как показано в следующем фрагменте кода.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<Contact> fetchedContact = client->GetContact(id);

Добавление контактов

Метод CreateContact() класса IEWSClient можно использовать для добавления информации о контакте на Exchange Server. Метод CreateContact() принимает объект Contact в качестве входного параметра.

Чтобы добавить контакты на Exchange Server:

  1. Инициализируйте IEWSClient с адресом и учетными данными.
  2. Инициализируйте объект Contact с необходимыми свойствами.
  3. Вызовите метод CreateContact() и передайте контакт для добавления на Exchange Server.

Следующий фрагмент кода демонстрирует добавление контактов на Exchange Server.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
//Create New Contact
System::SharedPtr<Contact> contact = System::MakeObject<Contact>();
//Set general info
contact->set_Gender(Aspose::Email::PersonalInfo::Gender::Male);
contact->set_DisplayName(u"Frank Lin");
contact->set_CompanyName(u"ABC Co.");
contact->set_JobTitle(u"Executive Manager");
//Add Phone numbers
contact->get_PhoneNumbers()->Add([&]{ auto tmp_0 = System::MakeObject<PhoneNumber>(); tmp_0->set_Number(u"123456789"); tmp_0->set_Category(PhoneNumberCategory::get_Home()); return tmp_0; }());
//contact's associated persons
contact->get_AssociatedPersons()->Add([&]{ auto tmp_1 = System::MakeObject<AssociatedPerson>(); tmp_1->set_Name(u"Catherine"); tmp_1->set_Category(AssociatedPersonCategory::get_Spouse()); return tmp_1; }());
contact->get_AssociatedPersons()->Add([&]{ auto tmp_2 = System::MakeObject<AssociatedPerson>(); tmp_2->set_Name(u"Bob"); tmp_2->set_Category(AssociatedPersonCategory::get_Child()); return tmp_2; }());
contact->get_AssociatedPersons()->Add([&]{ auto tmp_3 = System::MakeObject<AssociatedPerson>(); tmp_3->set_Name(u"Merry"); tmp_3->set_Category(AssociatedPersonCategory::get_Sister()); return tmp_3; }());
//URLs
contact->get_Urls()->Add([&]{ auto tmp_4 = System::MakeObject<Url>(); tmp_4->set_Href(u"www.blog.com"); tmp_4->set_Category(UrlCategory::get_Blog()); return tmp_4; }());
contact->get_Urls()->Add([&]{ auto tmp_5 = System::MakeObject<Url>(); tmp_5->set_Href(u"www.homepage.com"); tmp_5->set_Category(UrlCategory::get_HomePage()); return tmp_5; }());
//Set contact's Email address
contact->get_EmailAddresses()->Add([&]{ auto tmp_6 = System::MakeObject<EmailAddress>(); tmp_6->set_Address(u"Frank.Lin@Abc.com"); tmp_6->set_DisplayName(u"Frank Lin"); tmp_6->set_Category(EmailAddressCategory::get_Email1()); return tmp_6; }());
try
{
client->CreateContact(contact);
}
catch (System::Exception& ex)
{
System::Console::WriteLine(ex.get_Message());
}

Обновление контактов

Информация о контактах может быть обновлена с помощью Microsoft Outlook. Aspose.Email также может обновить информацию о контактах на Exchange Server с использованием Exchange Web Service (EWS). Метод IEWSClient->UpdateContact может обновить информацию о контактах на Exchange Server.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// List all the contacts and Loop through all contacts
System::ArrayPtr<System::SharedPtr<Contact>> contacts = client->GetContacts(client->get_MailboxInfo()->get_ContactsUri());
System::SharedPtr<Contact> contact = contacts[0];
System::Console::WriteLine(System::String(u"Name: ") + contact->get_DisplayName());
contact->set_DisplayName(u"David Ch");
client->UpdateContact(contact);

Удаление контактов

Класс IEWSClient предоставляет метод DeleteContact для доступа к удалению контактов из папки контактов Exchange Server. Этот метод принимает идентификатор контакта или Contact в качестве входного параметра.

Чтобы удалить контакты с Exchange Server:

  1. Инициализируйте IEWSClient с адресом и учетными данными.
  2. Удалите контакт, используя его идентификатор.
  3. Удалите контакт, вызвав метод DeleteContact с объектом Contact в качестве входного параметра.

Следующий фрагмент кода показывает вам, как удалить контакты с сервера Exchange, используя IEWSClient->DeleteContact.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::String strContactToDelete = u"John Teddy";
System::ArrayPtr<System::SharedPtr<Contact>> contacts = client->GetContacts(client->get_MailboxInfo()->get_ContactsUri());
for (System::SharedPtr<Contact> contact : contacts)
{
if (System::ObjectExt::Equals(contact->get_DisplayName(), strContactToDelete))
{
client->DeleteContact(contact);
}
}
client->Dispose();