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