16 WebLogic ServerでのJakarta Mailのプログラミング
この章の内容は次のとおりです。
- WebLogic ServerアプリケーションでのJakarta Mailの使用の概要
WebLogic Serverには、Jakarta Mail APIバージョン1.5のリファレンス実装が含まれています。Jakarta Mail APIを使用すると、WebLogic Serverアプリケーションに電子メール機能を追加できます。Jakarta Mailを使用すると、自社ネットワークまたはインターネット上のIMAP (Internet Message Access Protocol)対応およびSMTP (Simple Mail Transfer Protocol)対応のメール・サーバーにJavaアプリケーションからアクセスできます。メール・サーバー機能は提供されないため、Jakarta Mailを使用するには、メール・サーバーにアクセスできる必要があります。 - Jakarta Mail構成ファイルの理解
Jakarta Mailは、システムのメール・トランスポート機能を定義する構成ファイルに依存します。weblogic.jar
ファイルには、IMAPおよびSMTPメール・サーバーをJakarta Mailに対して有効にし、Jakarta Mailが処理できるデフォルトのメッセージ・タイプを定義する標準構成ファイルが含まれています。 - WebLogic Server用のJakarta Mailの構成
WebLogic Serverで使用するためにJakarta Mailを構成するには、WebLogicリモート・コンソールでメール・セッションを作成します。これにより、あらかじめ構成しておくセッション・プロパティを使用して、サーバー側モジュールとアプリケーションでJNDIを用いてJakarta Mailサービスにアクセスできるようになります。 - Jakarta Mailを使用したメッセージの送信
WebLogic Serverモジュール内のJakarta Mailを使用してメッセージを送信できます。 - Jakarta Mailを使用したメッセージの読取り
Jakarta Mail APIでは、指定した数または範囲のメッセージを読み取る、またはメッセージの特定の部分をあらかじめ取り出してフォルダのキャッシュに入れるなど、メッセージの読取りについて複数のオプションを提供しています。
WebLogic ServerアプリケーションでのJakarta Mailの使用の概要
WebLogic Serverには、Jakarta Mail APIバージョン1.5のリファレンス実装が含まれています。Jakarta Mail APIを使用すると、WebLogic Serverアプリケーションに電子メール機能を追加できます。Jakarta Mailを使用すると、自社ネットワークまたはインターネット上のIMAP (Internet Message Access Protocol)対応およびSMTP (Simple Mail Transfer Protocol)対応のメール・サーバーにJavaアプリケーションからアクセスできます。メール・サーバー機能は提供されないため、Jakarta Mailを使用するには、メール・サーバーにアクセスできる必要があります。
Jakarta Mail APIの使用に関するドキュメントは、https://jakarta.ee/specifications/mail/1.6/
で入手できます。この項では、WebLogic Server環境でJakarta Mailを使用する方法について説明しています。
weblogic.jar
ファイルには、次のJakarta Mail APIパッケージが含まれています:
-
javax.mail
-
javax.mail.event
-
javax.mail.internet
-
javax.mail.search
weblogic.jar
ファイルには、Jakarta Mailで必要なJAF (Java Activation Framework)パッケージも含まれています。
javax.mail
パッケージには、Internet Message Access Protocol (IMAP)およびSimple Mail Transfer Protocol (SMTP)メール・サーバーのプロバイダが含まれています。Jakarta Mail用に独自のPOP3プロバイダがあります。これは、weblogic.jar
には含まれていません。POP3プロバイダは、使用する場合、https://maven.java.net/content/repositories/releases/com/sun/mail/pop3
からダウンロードし、それをWebLogic Serverクラスパスに追加できます。
Jakarta Mail構成ファイルの理解
Jakarta Mailは、システムのメール・トランスポート機能を定義する構成ファイルに依存します。weblogic.jar
ファイルには、IMAPおよびSMTPメール・サーバーをJakarta Mailに対して有効にし、Jakarta Mailが処理できるデフォルトのメッセージ・タイプを定義する標準構成ファイルが含まれています。
Jakarta Mailを拡張して追加のトランスポート、プロトコル、およびメッセージタイプをサポートする場合を除き、Jakarta Mail構成ファイルを変更する必要はありません。Jakarta Mailを拡張する場合は、https://javaee.github.io/javamail/ThirdPartyProducts
を参照してください。次に、拡張したJakarta MailパッケージをWebLogic Serverクラスパスのweblogic.jar
の前に追加します。
WebLogic Server用のJakarta Mailの構成
WebLogic Serverで使用するためにJakarta Mailを構成するには、WebLogicリモート・コンソールでメール・セッションを作成します。これにより、あらかじめ構成しておくセッション・プロパティを使用して、サーバー側モジュールとアプリケーションでJNDIを用いてJakarta Mailサービスにアクセスできるようになります。
たとえば、メール・セッションを作成すると、メール・ホスト、トランスポートおよび格納プロトコル、デフォルトのメール・ユーザーをWebLogicリモート・コンソールで指定できるため、Jakarta Mailを使用するモジュールでこれらのプロパティを設定する必要はありません。メール・セッションは単一のjavax.mail.Session
オブジェクトを作成し、JNDIを通じてそのオブジェクトを必要とするすべてのモジュールで利用できるようにするため、多数の電子メール・ユーザーを持つアプリケーションではメリットが得られます。
WebLogicリモート・コンソールを使用してメール・セッションを作成するには、Oracle WebLogicリモート・コンソール・オンライン・ヘルプのJavaMailへのアクセスの構成に関する項を参照してください。
メール・セッションで設定したプロパティ・セットは、オーバーライドするプロパティを含むjava.util.Properties
オブジェクトを作成すると、コード内でオーバーライドできます。「Jakarta Mailを使用したメッセージの送信」を参照してください。メール・セッション・オブジェクトをJNDIでルックアップした後、Properties
オブジェクトを使用してSession.getInstance()
メソッドを呼び出し、カスタマイズしたセッションを取得します。
Jakarta Mailを使用したメッセージの送信
WebLogic Serverモジュール内のJakarta Mailを使用してメッセージを送信できます。
Jakarta Mailを使用したメッセージの送信ステップは次のとおりです:
JNDIルックアップでは、障害が発生するとNamingException
例外がスローされます。Jakarta Mailでは、トランスポート・クラスの特定に問題がある場合、またはメール・ホストとの通信に失敗した場合にMessagingException
がスローされることがあります。コードをtryブロックの中に配置し、これらの例外を捕捉するようにしておきます。
Jakarta Mailを使用したメッセージの読取り
Jakarta Mail APIでは、指定した数または範囲のメッセージを読み取る、またはメッセージの特定の部分をあらかじめ取り出してフォルダのキャッシュに入れるなど、メッセージの読取りについて複数のオプションを提供しています。
Jakarta Mail APIを使用すると、メッセージ・ストアに接続できます。メッセージ・ストアはIMAPサーバーまたはPOP3サーバーとなります。メッセージはフォルダに保存されます。IMAPの場合、メッセージ・フォルダはメール・サーバー上に格納されます。メッセージ・フォルダには、受信したメッセージが入るフォルダとアーカイブされたメッセージが入るフォルダがあります。POP3の場合は、メッセージの到着時にメッセージを保存するフォルダをサーバーが提供します。クライアントは、POP3サーバーに接続するときに、メッセージを取得してクライアントのメッセージ・ストアに転送します。
フォルダは、ディスクのディレクトリと同じような階層構造になっています。フォルダにはメッセージまたは他のフォルダを格納できます。デフォルトのフォルダは構造の最上位にあります。特別なフォルダ名であるINBOXは、ユーザーのプライマリ・フォルダのことを指し、デフォルト・フォルダの内部にあります。受信したメールを読み込むには、ストアからデフォルト・フォルダを取得して、次にデフォルト・フォルダからINBOXフォルダを取得します。
APIには、メッセージの読込みに関するオプションがいくつか用意されています。詳細は、Jakarta Mail APIを参照してください。
WebLogic Serverモジュール内からPOP3サーバーで受信したメッセージを読み込むステップは次のとおりです。
IMAPサーバーからのメッセージの読込みは、POP3サーバーからのメッセージの読込みと同様です。ただしIMAPの場合は、フォルダを作成および操作し、フォルダ間でメッセージを転送するメソッドがJakarta Mail APIで提供されています。IMAPサーバーを使用すると、POP3サーバーを使用する場合よりも少ないコードで、多機能なWebベースのメール・クライアントを実装できます。POP3では、おそらくデータベースまたはフォルダを表すためのファイル・システムを使用して、WebLogic Serverからメッセージ・ストアを管理するコードを記述する必要があります。