Java™ Platform, Enterprise Edition (Java EE) アプリケーションを使用可能にして、JavaMail API でメール・リソースを使用できます。
始める前に
JavaMail API を使用すると、Enterprise JavaBeans (EJB) アプリケーションまたはサーブレットなどの任意の Java EE アプリケーション・コンポーネントに、コード・セグメントを組み込んで、アプリケーションで、メッセージを送信したりメールのコピーを「送信済み」フォルダーに保存したりできるようになります。
以下は、Java EE アプリケーションに組み込むコードのサンプルです。
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
javax.mail.Session mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3");
MimeMessage msg = new MimeMessage(mail_session);
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("bob@coldmail.net"));
msg.setFrom(new InternetAddress("alice@mail.eedge.com"));
msg.setSubject("Important message from eEdge.com");
msg.setText(msg_text);
Transport.send(msg);
Store store = mail_session.getStore();
store.connect();
Folder f = store.getFolder("Sent");
if (!f.exists()) f.create(Folder.HOLDS_MESSAGES);
f.appendMessages(new Message[] {msg});
このタスクについて
Java EE アプリケーションは、
java:comp/env/mail サブコンテキストで論理的に命名された接続ファクトリーへの参照を検索することによって、JavaMail API を使用することができます。このサブコンテキストは、アプリケーションのデプロイメント記述子で宣言され、インストール・システムに固有のメール・セッション・リソースにマップされています。
他の Java EE リソースの場合と同様、これを行うと、アプリケーションが外部リソースへの参照をハードコーディングする必要がなくなります。
手順
- Java Naming
and Directory Interface (JNDI) でリソースを探します。 Java EE 仕様では、メール・セッション・インスタンスが、リソース、すなわちメール・トランスポートとストア接続の入手先となるファクトリーと見なされます。メール・セッションは、ハードコーディングしないでください (すなわち、Properties オブジェクトを満たしてから、それを使用して javax.mail.Session オブジェクトを作成しないでください)。代わりに、システム機能でリソースを構成してから JNDI 検索によってリソースを検索するという、Java EE プログラミング・モデルに従ってください。
直前のサンプル・コードで、javax.mail.Session mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3"); という行は、メール・セッションをハードコーディングせず、JNDI によって検出されたリソース名を使用する例です。
検索名 mail/MailSession3 は、実リソースに対する間接参照と見なすことができます。
- アプリケーションのアセンブル時にリソース参照を定義します。 メール・リソースへのリソース参照は、コンポーネントのデプロイメント記述子で定義する必要があります。これは、JNDI 検索ではメール・セッションが参照されるためです。
通常は、アプリケーション・サーバーに同梱されるアセンブリー・ツールを使用できます。
この参照を作成する場合は、参照名が必ずコードで使用されている名前と一致するようにしてください。
例えば、前のコードは、検索で
java:comp/env/mail/MailSession3 を使用します。
そのため、この参照の名前は mail/Session3、リソースのタイプは javax.mail.Session でなければなりません。構成後、デプロイメント記述子には、メール・リソース参照のための以下のエントリーが含まれます。
<resource-reference>
<description>description</description>
<res-ref-name>mail/MailSession3</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-reference>
- メール・プロバイダーおよびメール・セッションを構成します。 サンプル・コードがメール・リソースを参照し、デプロイメント記述子が参照を宣言しても、参照そのものはまだ存在していません。
ここで、アプリケーション・コンポーネントが参照するメール・リソースを構成する必要があります。
構成されるメール・セッションは、そのトランスポート部分とメール・アクセス部分の両方が定義されていなければならないことに注意してください。トランスポート部分の定義が必要なのは、コードがメッセージを送信するためであり、メール・アクセス部分が必要なのは、ローカル・メール・ストアにもコピーが保存されるためです。
メール・セッションを構成するときは、JNDI 名を指定する必要があります。これは、アプリケーションをインストールしたり、アプリケーション内のリソース参照を構成された実リソースとリンクアップしたりするときに必要になる、重要な名前です。
- アプリケーションをインストールします。 管理コンソールまたはスクリプト・ツールを使用して、アプリケーションをインストールすることができます。
インストール時に、アプリケーション・サーバーはすべてのリソース参照を検査し、ユーザーはそれぞれの参照に対して JNDI 名を指定する必要があります。これは任意の JNDI 名ではなく、参照の宛先である特定の構成済みリソースに指定される JNDI 名です。
- 既存のメール・プロバイダーおよびセッションを管理します。 メール・プロバイダーおよびセッションは、更新したり除去したりできます。
メール・プロバイダーおよびセッションを更新するには、以下のようにします。
- 管理コンソールを開きます。
- コンソールのナビゲーション・ツリーで、とクリックします。
- 「メール・プロバイダー」または「メール・セッション」をクリックして、変更する JavaMail リソースを選択します。
- 変更する特定のリソースを選択します。 メール・プロバイダーまたはメール・セッションを除去するには、該当するリソースの横にあるチェック・ボックスを選択して、「削除」をクリックします。
- 「適用」または「OK」をクリックします。
- 構成を保存します。
- オプション: メール・セッションをデバッグします。
次のタスク
使用するアプリケーションにクライアントがある場合は、アプリケーション・クライアント・リソース構成ツール (ACRCT) を使用して、メール・プロバイダーとメール・セッションを更新できます。