JavaでMSExchangeServerの会話を操作する

多くの場合、電子メールはスレッドを形成する複数のメッセージ(または返信)で構成されます。 Microsoft Exchange Serverでは、これらのスレッドは会話と呼ばれます。プログラムでMSExchangeServerを操作しているときに、会話にアクセスして管理する必要がある場合があります。これを実現するために、この記事では、JavaのMicrosoft Exchange Serverで会話を検索、コピー、移動、および削除する方法を学習します。

MSExchangeServerで会話を処理するJavaAPI

Microsoft Exchange Serverでの会話を操作するには、Aspose.Email for Javaを使用します。これは、Javaアプリケーション内からMSExchangeServerと連携するための一連の機能を提供するすばらしいAPIです。 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>

JavaのMSExchangeServerで会話を検索する

以下は、Javaを使用してMSExchangeServerのフォルダーから会話を検索する手順です。

次のコードサンプルは、JavaのMSExchangeServerのフォルダから会話を見つける方法を示しています。

// メールボックスの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) {
	// IDやトピックなどの会話プロパティを表示する
	System.out.println("Topic: " + conversation.getConversationTopic());
	System.out.println("Flag Status: " + conversation.getFlagStatus());
	System.out.println();
}

JavaのMSExchangeServerで会話をコピーする

会話をあるフォルダから別のフォルダにコピーすることもできます。 JavaでExchangeServerの受信トレイから削除済みアイテムフォルダに会話をコピーする方法を見てみましょう。

次のコードサンプルは、Javaを使用してMSExchangeServerで会話をコピーする方法を示しています。

// メールボックスの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");
    }
}

JavaのMSExchangeServerで会話を移動する

前のセクションでは、会話を1つのフォルダーから別のフォルダーにコピーしました。ただし、場合によっては、会話を特定のフォルダーに移動する必要があります。以下は、JavaのMSExchangeServerで会話を移動する手順です。

次のコードサンプルは、Javaを使用してMSExchangeServerで会話を移動する方法を示しています。

// メールボックスの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");
    }
}

JavaでMSExchangeServerの会話を削除する

最後に、JavaでMSExchangeServerから会話を削除する方法を見てみましょう。

次のコードサンプルは、JavaでMSExchangeServerから会話を削除する方法を示しています。

// メールボックスの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.EmailforJavaを使用できます。

結論

この記事では、Javaを使用してMicrosoftExchangeServerで会話を管理する方法を学習しました。これまで、JavaでMS Exchange Serverの会話をプログラムで検索、コピー、移動、および削除する方法を見てきました。さらに、ドキュメントを調べて、Aspose.EmailforJavaの詳細を読むことができます。また、フォーラムから質問することもできます。

関連項目