Работа с контактами на 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-.NET
// Create instance of IEWSClient class by giving credentials
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");
// List all the contacts
Contact[] contacts = client.GetContacts(client.MailboxInfo.ContactsUri);
foreach (MapiContact contact in contacts)
{
// Display name and email address
Console.WriteLine("Name: " + contact.NameInfo.DisplayName + ", Email Address: " + contact.ElectronicAddresses.Email1);
}

Разрешение контактов по имени контакта

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create instance of IEWSClient class by giving credentials
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");
// List all the contacts
Contact[] contacts = client.ResolveContacts("Changed Name", ExchangeListContactsOptions.FetchPhoto);
foreach (MapiContact contact in contacts)
{
// Display name and email address
Console.WriteLine("Name: " + contact.NameInfo.DisplayName + ", Email Address: " + contact.ElectronicAddresses.Email1);
}

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

Aspose.Email.Mail.Contact.NotesFormat задает тип текстового формата заметок контактов, определенный перечислением Aspose.Email.TextFormat.

Получение контакта по идентификатору

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

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

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

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

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

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

Aspose.Email предоставляет класс EWSClient для подключения к Microsoft Exchange Server с использованием Exchange Web Services. Примеры кода показывают, как использовать Exchange Web Services для добавления контактов на Exchange Server.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Set mailboxURI, Username, password, domain information
string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
//Create New Contact
Contact contact = new Contact();
//Set general info
contact.Gender = Gender.Male;
contact.DisplayName = "Frank Lin";
contact.CompanyName = "ABC Co.";
contact.JobTitle = "Executive Manager";
//Add Phone numbers
contact.PhoneNumbers.Add(new PhoneNumber { Number = "123456789", Category = PhoneNumberCategory.Home });
//contact's associated persons
contact.AssociatedPersons.Add(new AssociatedPerson { Name = "Catherine", Category = AssociatedPersonCategory.Spouse });
contact.AssociatedPersons.Add(new AssociatedPerson { Name = "Bob", Category = AssociatedPersonCategory.Child });
contact.AssociatedPersons.Add(new AssociatedPerson { Name = "Merry", Category = AssociatedPersonCategory.Sister });
//URLs
contact.Urls.Add(new Url { Href = "www.blog.com", Category = UrlCategory.Blog });
contact.Urls.Add(new Url { Href = "www.homepage.com", Category = UrlCategory.HomePage });
//Set contact's Email address
contact.EmailAddresses.Add(new EmailAddress { Address = "Frank.Lin@Abc.com", DisplayName = "Frank Lin", Category = EmailAddressCategory.Email1 });
try
{
client.CreateContact(contact);
}
catch (Exception ex)
{
Console.WriteLine(ex.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-.NET
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
// List all the contacts and Loop through all contacts
Contact[] contacts = client.GetContacts(client.MailboxInfo.ContactsUri);
Contact contact = contacts[0];
Console.WriteLine("Name: " + contact.DisplayName);
contact.DisplayName = "David Ch";
client.UpdateContact(contact);

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

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

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

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

Следующие примеры кода показывают, как удалить контакты с сервера Exchange с использованием Exchange Web Service.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create instance of EWSClient class by giving credentials
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");
string strContactToDelete = "John Teddy";
Contact[] contacts = client.GetContacts(client.MailboxInfo.ContactsUri);
foreach (Contact contact in contacts)
{
if (contact.DisplayName.Equals(strContactToDelete))
client.DeleteItem(contact.Id.EWSId, DeletionOptions.DeletePermanently);
}
client.Dispose();

Работа с дополнительными свойствами контактов на Exchange Server


 IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");

//Необходимые дополнительные свойства должны быть добавлены для их создания или чтения с сервера Exchange

string[] extraFields = new string[] {{ "Пользовательское поле 1", "Пользовательское поле 2", "Пользовательское поле 3", "Пользовательское поле 4" }};

foreach (string extraField in extraFields)

    client.ContactExtendedPropertiesDefinition.Add(extraField);

//Создайте тестовый контакт на сервере Exchange

Contact contact = new Contact();

contact.DisplayName = "EMAILNET-38433 - " + Guid.NewGuid().ToString();

foreach (string extraField in extraFields)

    contact.ExtendedProperties.Add(extraField, extraField);

string contactId = client.CreateContact(contact);

//извлеките контакт с сервера через некоторое время

Thread.Sleep(5000);

contact = client.GetContact(contactId);

//Парсинг дополнительных свойств контакта

foreach (string extraField in extraFields)

    if (contact.ExtendedProperties.ContainsKey(extraField))

        Console.WriteLine(contact.ExtendedProperties[extraField].ToString());