JavaのMSExchangeServerでのフォルダの作成と削除

Microsoft Exchange Serverは、受信トレイ、送信トレイなどのさまざまなフォルダーに電子メールを保持します。さらに、事前定義されたフォルダー内に独自のフォルダーまたはサブフォルダーを作成できます。場合によっては、プログラムでExchangeServer上にカスタムフォルダーを作成する必要があります。これを実現するために、この記事では、JavaのMSExchangeServerでEWSを使用してフォルダーまたはサブフォルダーを作成または削除する方法について説明します。

MSExchangeServer上にフォルダを作成するためのJavaAPI

EWSを使用してMSExchangeServer上のフォルダーを操作するには、Aspose.Email for Javaを利用します。これは、Javaアプリケーション内からExchangeServerのサービスを操作するための強力な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にフォルダを作成する手順です。

  • MS Exchange Serverに接続し、IEWSClientでEWSクライアントオブジェクトを取得します。
  • ルートフォルダの名前と作成するフォルダを指定します。
  • IEWSClient.createFolder(String, String)メソッドを使用してフォルダーを作成します。

次のコードサンプルは、JavaでEWSを使用してMSExchangeServerにフォルダを作成する方法を示しています。

// 資格情報を指定してEWSClientクラスのインスタンスを作成します
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd",
		"domain");

// 受信トレイのURIを取得します(受信トレイにフォルダーを作成するため)
String inbox = client.getMailboxInfo().getInboxUri();

// フォルダ名を指定する
String folderName1 = "EMAILNET-35054";

try {
	// フォルダーを作る
	client.setUseSlashAsFolderSeparator(true);
	client.createFolder(inbox, folderName1);
} catch (Exception e) {
	// 何かをする
}

JavaのMSExchangeServerにサブフォルダを作成する

サブフォルダーを作成するには、最初に親フォルダーが存在するかどうかを確認する必要があります。含まれている場合は、サブフォルダーを作成するだけです。そうでない場合は、最初に親フォルダーを作成します。次の手順は、JavaのMSExchangeServerでサブフォルダを作成する方法を示しています。

  • MS Exchange Serverに接続し、IEWSClientでEWSクライアントオブジェクトを取得します。
  • ルートフォルダとサブフォルダの名前を指定します。
  • IEWSClient.folderExists(String, String)メソッドを使用して、親フォルダーが存在するかどうかを確認します。そうでない場合は、作成します。
  • IEWSClient.createFolder(String, String)メソッドを使用してサブフォルダーを作成します。

次のコードサンプルは、JavaのMSExchangeServerでサブフォルダを作成する方法を示しています。

// 資格情報を指定してEWSClientクラスのインスタンスを作成します
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");

// 受信トレイのURIを取得します(受信トレイにフォルダーを作成するため)
String inbox = client.getMailboxInfo().getInboxUri();

// フォルダ名を指定する
String folderName1 = "EMAILNET-35054";

// サブフォルダー名を指定します
String subFolderName = "2015";
String folderName2 = folderName1 + "/" + subFolderName;

try
{			
    // フォルダーを作る
    client.setUseSlashAsFolderSeparator(true);
    if (!client.folderExists(inbox, folderName1))
    {
        // フォルダーを作る
        client.createFolder(inbox, folderName1);
    }

    // サブフォルダを作成する
    client.createFolder(inbox, folderName2);
}
catch(Exception e)
{
    // 何かをする
}

JavaでMSExchangeServer上のフォルダを削除する

以下は、JavaでMSExchangeServer上のフォルダを削除する手順です。

次のコードサンプルは、JavaでMSExchangeServer上のフォルダを削除する方法を示しています。

// 資格情報を指定してEWSClientクラスのインスタンスを作成します
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");

// 受信トレイのURIを取得します(受信トレイにフォルダーを作成するため)
String inbox = client.getMailboxInfo().getInboxUri();

// フォルダ名を指定する
String folderName1 = "EMAILNET-35054";

ExchangeFolderInfo rootFolderInfo = null;

try
{			
	ExchangeFolderInfo[] referenceToRootFolderInfo = { rootFolderInfo };
	
	// フォルダが存在するかどうかを確認します
	boolean outRefCondition0 = client.folderExists(inbox, folderName1, /* out */ referenceToRootFolderInfo);
	rootFolderInfo = referenceToRootFolderInfo[0];

	if (outRefCondition0) {		        
	// フォルダを削除
	client.deleteFolder(rootFolderInfo.getUri(), true);
	}
}
catch(Exception e)
{
    // 何かをする
}

無料のAPIライセンスを取得する

無料の一時ライセンスを取得して、評価の制限なしにAspose.EmailforJavaを使用できます。

結論

この記事では、JavaでEWSを使用してMicrosoftExchangeServer上のフォルダーを操作する方法を学習しました。 JavaでプログラムによってMSExchangeServer上の特定のフォルダを作成および削除する方法を見てきました。さらに、ドキュメントからAspose.EmailforJavaの詳細を学ぶことができます。ご不明な点がございましたら、フォーラムに投稿してください。

関連項目