多くの場合、電子メールはスレッドを形成する複数のメッセージ(または返信)で構成されます。 Microsoft Exchange Serverでは、これらのスレッドは会話と呼ばれます。プログラムでMSExchangeServerを操作しているときに、会話にアクセスして管理する必要がある場合があります。これを実現するために、この記事では、JavaのMicrosoft Exchange Serverで会話を検索、コピー、移動、および削除する方法を学習します。
- MSExchangeServerで会話を処理するJavaAPI
- JavaのMSExchangeServerで会話を検索する
- JavaのMSExchangeServerで会話をコピーする
- JavaのMSExchangeServerで会話を移動する
- JavaでMSExchangeServerの会話を削除する
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のフォルダーから会話を検索する手順です。
- まず、ユーザー名、パスワード、およびドメインを使用してNetworkCredentialオブジェクトを作成および初期化します。
- 次に、メールボックスURIとNetworkCredentialオブジェクトを使用してIEWSClientを初期化します。
- IEWSClient.findConversations(IEWSClient.getMailboxInfo().getInboxUri())メソッドを呼び出し、ExchangeConversation配列で会話を取得します。
- 最後に、配列内の各ExchangeConversationオブジェクトをループして、その詳細を取得します。
次のコードサンプルは、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の受信トレイから削除済みアイテムフォルダに会話をコピーする方法を見てみましょう。
- まず、ユーザー名、パスワード、およびドメインを使用してNetworkCredentialオブジェクトを作成および初期化します。
- 次に、メールボックスURIとNetworkCredentialオブジェクトを使用してIEWSClientを初期化します。
- IEWSClient.findConversations(IEWSClient.getMailboxInfo().getInboxUri()))メソッドを呼び出し、ExchangeConversation配列で会話を取得します。
- 配列内の各ExchangeConversationオブジェクトをループし、必要なオブジェクトをフィルタリングします。
- 最後に、IEWSClient.copyConversationItems(ExchangeConversation.getConversationId()、IEWSClient.getMailboxInfo().getDeletedItemsUri())メソッドを使用して会話をコピーします。
次のコードサンプルは、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で会話を移動する手順です。
- まず、ユーザー名、パスワード、およびドメインを使用してNetworkCredentialオブジェクトを作成および初期化します。
- 次に、メールボックスURIとNetworkCredentialオブジェクトを使用してIEWSClientを初期化します。
- IEWSClient.findConversations(IEWSClient.getMailboxInfo().getInboxUri()))メソッドを呼び出し、ExchangeConversation配列で会話を取得します。
- 配列内の各ExchangeConversationオブジェクトをループし、必要なオブジェクトをフィルタリングします。
- 最後に、IEWSClient.moveConversationItems(ExchangeConversation.getConversationId()、IEWSClient.getMailboxInfo().getDeletedItemsUri())メソッドを使用して会話を移動します。
次のコードサンプルは、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から会話を削除する方法を見てみましょう。
- まず、ユーザー名、パスワード、およびドメインを使用してNetworkCredentialオブジェクトを作成および初期化します。
- 次に、メールボックスURIとNetworkCredentialオブジェクトを使用してIEWSClientを初期化します。
- IEWSClient.findConversations(IEWSClient.getMailboxInfo().getInboxUri())メソッドを呼び出し、ExchangeConversation配列で会話を取得します。
- 配列内の各ExchangeConversationオブジェクトをループし、必要なオブジェクトをフィルタリングします。
- 最後に、IEWSClient.deleteConversationItems(ExchangeConversation.getConversationId())メソッドを使用して会話を削除します。
次のコードサンプルは、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の詳細を読むことができます。また、フォーラムから質問することもできます。