Работа с беседами на MS Exchange Server в Java

Часто электронное письмо состоит из нескольких сообщений (или ответов), образующих цепочку. В Microsoft Exchange Server эти потоки называются диалогами. При программной работе с MS Exchange Server вам может потребоваться доступ к диалогам и управление ими. Для этого в этой статье вы узнаете, как находить, копировать, перемещать и удалять разговоры на Microsoft Exchange Server в Java.

Java API для работы с диалогами на MS Exchange Server

Для работы с беседами на Microsoft Exchange Server будем использовать Aspose.Email for Java. Это потрясающий API, который предоставляет множество функций для работы с MS Exchange Server из приложений Java. Вы можете либо скачать API, либо установить его, используя следующие конфигурации Maven.

Репозиторий:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>

Зависимость:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.2</version>
    <classifier>jdk16</classifier>
</dependency>

Найдите диалоги на сервере MS Exchange в Java

Ниже приведены шаги для поиска разговоров из папки на сервере MS Exchange с помощью Java.

  • Сначала создайте и инициализируйте объект NetworkCredential, указав имя пользователя, пароль и домен.
  • Затем инициализируйте IEWSClient с помощью URI почтового ящика и объекта NetworkCredential.
  • Вызовите метод IEWSClient.findConversations(IEWSClient.getMailboxInfo().getInboxUri()) и получите диалоги в массиве ExchangeConversation.
  • Наконец, просмотрите каждый объект ExchangeConversation в массиве и извлеките его детали.

В следующем примере кода показано, как найти беседы из папки в MS Exchange Server на Java.

// Установите URI почтового ящика, имя пользователя, пароль, информацию о домене
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);
System.out.println("Connected to Exchange");

// Поиск элементов беседы в папке «Входящие»
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// Показать все разговоры
for (ExchangeConversation conversation : conversations) {
	// Отображение свойств разговора, таких как идентификатор и тема
	System.out.println("Topic: " + conversation.getConversationTopic());
	System.out.println("Flag Status: " + conversation.getFlagStatus());
	System.out.println();
}

Скопируйте беседу на MS Exchange Server в Java

Вы также можете копировать разговоры из одной папки в другую. Давайте посмотрим, как копировать разговоры из папки «Входящие» в папку удаленных элементов Exchange Server в Java.

В следующем примере кода показано, как скопировать диалог в MS Exchange Server с помощью Java.

// Установите URI почтового ящика, имя пользователя, пароль, информацию о домене
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);
System.out.println("Connected to Exchange");

// Поиск элементов беседы в папке «Входящие»
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// Показать все разговоры
for (ExchangeConversation conversation : conversations) {
	System.out.println("Topic: " + conversation.getConversationTopic());
    
	// Скопируйте элемент беседы на основе некоторого условия
    if (conversation.getConversationTopic().contains("test email")) {
        client.copyConversationItems(conversation.getConversationId(), client.getMailboxInfo().getDeletedItemsUri());
        System.out.println("Copied the conversation item to another folder");
    }
}

Переместить беседу на MS Exchange Server в Java

В предыдущем разделе мы просто копировали разговоры из одной папки в другую. Однако в некоторых случаях вам может потребоваться переместить беседу в определенную папку. Ниже приведены шаги для перемещения беседы в MS Exchange Server на Java.

В следующем примере кода показано, как переместить диалог в MS Exchange Server с помощью Java.

// Установите URI почтового ящика, имя пользователя, пароль, информацию о домене
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);
System.out.println("Connected to Exchange");

// Поиск элементов беседы в папке «Входящие»
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// Показать все разговоры
for (ExchangeConversation conversation : conversations) {
	System.out.println("Topic: " + conversation.getConversationTopic());
    
	// Переместить элемент беседы на основе некоторого условия
    if (conversation.getConversationTopic().contains("test email") == true) {
        client.moveConversationItems(conversation.getConversationId(), client.getMailboxInfo().getDeletedItemsUri());
        System.out.println("Moved the conversation item to another folder");
    }
}

Удалить беседу на сервере MS Exchange в Java

В заключение давайте посмотрим, как удалить беседу с MS Exchange Server в Java.

В следующем примере кода показано, как удалить диалог с MS Exchange Server в Java.

// Установите URI почтового ящика, имя пользователя, пароль, информацию о домене
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);
System.out.println("Connected to Exchange");

// Поиск элементов беседы в папке «Входящие»
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// Показать все разговоры
for (ExchangeConversation conversation : conversations) {
	System.out.println("Topic: " + conversation.getConversationTopic());
    
	// Удалить элемент беседы на основе некоторого условия
    if (conversation.getConversationTopic().contains("test email") == true) {
        client.deleteConversationItems(conversation.getConversationId());
        System.out.println("Deleted the conversation item");
    }
}

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

Вы можете получить бесплатную временную лицензию на использование Aspose.Email для Java без ограничений пробной версии.

Вывод

В этой статье вы узнали, как управлять диалогами в Microsoft Exchange Server с помощью Java. Вы видели, как программно на Java находить, копировать, перемещать и удалять диалоги на MS Exchange Server. Кроме того, вы можете изучить документацию, чтобы узнать больше об Aspose.Email для Java. Также вы можете задать свои вопросы через наш форум.

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