WebLogic Server アプリケーションの開発

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

WebLogic Server での JavaMail のプログラミング

以下の節では、WebLogic Server でのプログラミングに関連する、さらなるトピックを説明します。

 


WebLogic Server アプリケーションでの JavaMail の使い方の概要

WebLogic Server には Sun Microsystems の JavaMail API バージョン 1.3 参照実装が含まれています。JavaMail API を使用すると、WebLogic Server アプリケーションに電子メール機能を追加できます。JavaMail を使用すると、自社ネットワークまたはインターネット上の IMAP (Internet Message Access Protocol) 対応および SMTP (Simple Mail Transfer Protocol) 対応のメール サーバに Java アプリケーションからアクセスできます。JavaMail はメール サーバ機能を持っていないので、JavaMail を使用するにはメール サーバが必要です。

JavaMail API の使い方について詳細に説明したドキュメントは、Sun の Web サイトにある JavaMail のページで入手できます。ここでは、WebLogic Server 環境で JavaMail を使用する方法について説明しています。

weblogic.jar ファイルには、Sun が提供する以下の JavaMail API パッケージが含まれています。

weblogic.jar ファイルには、JavaMail で必要な JAF (Java Activation Framework) パッケージも含まれています。

javax.mail パッケージには、Internet Message Access Protocol (IMAP) および Simple Mail Transfer Protocol (SMTP) メール サーバのプロバイダが含まれています。Sun には、JavaMail 用に独自の POP3 プロバイダがあります。これは、weblogic.jar には含まれていません。使用する場合は、Sun からその POP3 プロバイダをダウンロードし、WebLogic Server のクラスパスに追加できます。

 


JavaMail コンフィグレーション ファイルについて

JavaMail は、システムのメール転送機能を定義するコンフィグレーション ファイルに依存します。weblogic.jar ファイルには、Sun の標準コンフィグレーション ファイルが入っています。このファイルにより、IMAP および SMTP メール サーバが JavaMail 向けに使用可能になり、JavaMail が処理できるデフォルトのメッセージ タイプが定義されます。

JavaMail を拡張してサポートする転送、プロトコル、およびメッセージのタイプを追加する場合を除いて、JavaMail コンフィグレーション ファイルを変更する必要はありません。JavaMail を拡張する場合は、Sun の Web サイトから JavaMail をダウンロードして、Sun の拡張を追加する手順に従います。次に、拡張した JavaMail パッケージを weblogic.jar の前の WebLogic Server クラスパスに追加します。

 


WebLogic Server 用の JavaMail のコンフィグレーション

WebLogic Server で使用するために JavaMail をコンフィグレーションするには、WebLogic Server Administration Console でメール セッションを作成します。これにより、あらかじめコンフィグレーションしておくセッション プロパティを使用して、サーバサイド モジュールとアプリケーションで JNDI を用いて JavaMail サービスにアクセスできるようになります。たとえば、メール セッションを作成すると、メール ホスト、転送および格納プロトコル、デフォルトのメール ユーザを Administration Console で指定できるため、JavaMail を使用するモジュールでこれらのプロパティを設定する必要はありません。メール セッションは単一の javax.mail.Session オブジェクトを作成し、JNDI を通じてそのオブジェクトを必要とするすべてのモジュールで利用できるようにするため、多数の電子メール ユーザを持つアプリケーションではメリットが得られます。

Administration Console によるメール セッションの使用の詳細については、Administration Console オンライン ヘルプの「JavaMail へのアクセスのコンフィグレーション」を参照してください。

メール セッションで設定したプロパティ セットは、オーバーライドするプロパティを含む java.util.Properties オブジェクトを作成すると、コード内でオーバーライドできます。「JavaMail を使用したメッセージの送信」を参照してください。メール セッション オブジェクトを JNDI でルックアップした後、Properties オブジェクトを使用して Session.getInstance() メソッドを呼び出し、カスタマイズしたセッションを取得します。

 


JavaMail を使用したメッセージの送信

WebLogic Server モジュール内から JavaMail を使用してメッセージを送信する手順は次のとおりです。

  1. JNDI (ネーミング)、JavaBean Activation、JavaMail パッケージをインポートします。java.util.Properties: もインポートします。
  2. import java.util.*; 
    import javax.activation.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.naming.*;
  3. JNDI でメール セッションを次のようにルックアップします。
  4. InitialContext ic = new InitialContext();
    Session session = (Session) ic.lookup("myMailSession");
  5. Administration Console で設定したセッションのプロパティをオーバーライドする必要がある場合は、java.util.Properties オブジェクトを作成してオーバーライドするプロパティに追加します。getInstance() を呼び出して、新しいプロパティの新しいセッション オブジェクトを取得します。
  6. Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.host", "mailhost");
    // HTML フォームからのメール アドレスを発信元アドレスに使用する
    props.put("mail.from", emailAddress);
    Session session2 = session.getInstance(props);
  7. MimeMessage を作成します。次の例で、tosubject、および messageTxt は文字列の変数で、ユーザが入力した内容が入ります。
  8. Message msg = new MimeMessage(session2);
    msg.setFrom();
    msg.setRecipients(Message.RecipientType.TO,
                      InternetAddress.parse(to, false));
    msg.setSubject(subject);
    msg.setSentDate(new Date());
    // コンテンツは、本文が 1 つある MIME マルチパート メッセージに
    // 格納される
    MimeBodyPart mbp = new MimeBodyPart();
    mbp.setText(messageTxt);
    Multipart mp = new MimeMultipart();
    mp.addBodyPart(mbp);
    msg.setContent(mp);
  9. メッセージを送信します。
  10. Transport.send(msg);

JNDI ルックアップでは、エラーが発生すると NamingException 例外が送出されます。JavaMail では、転送クラスの特定またはメール ホストとの通信に失敗した場合に MessagingException が送出されます。コードを try ブロックの中に配置し、これらの例外を捕捉するようにしておきます。

 


JavaMail を使用したメッセージの読み込み

JavaMail API を使用すると、メッセージ ストアに接続できます。メッセージ ストアは IMAP サーバまたは POP3 サーバとなります。メッセージはフォルダに保存されます。IMAP の場合、メッセージ フォルダはメール サーバ上に格納されます。メッセージ フォルダには、受信したメッセージが入るフォルダとアーカイブされたメッセージが入るフォルダがあります。POP3 の場合は、メッセージの到着時にメッセージを保存するフォルダをサーバが提供します。クライアントは、POP3 サーバに接続するときに、メッセージを取得してクライアントのメッセージ ストアに転送します。

フォルダは、ディスクのディレクトリと同じような階層構造になっています。フォルダにはメッセージまたは他のフォルダを格納できます。デフォルトのフォルダは構造の最上位にあります。特別なフォルダ名である INBOX は、ユーザのプライマリ フォルダのことを指し、デフォルト フォルダの内部にあります。受信したメールを読み込むには、ストアからデフォルト フォルダを取得して、次にデフォルト フォルダから INBOX フォルダを取得します。

API では、指定した数または範囲のメッセージを読み取る、またはメッセージの特定の部分をあらかじめ取り出してフォルダのキャッシュに入れるなど、メッセージの読み込みについて複数のオプションを提供しています。詳細については、JavaMail API を参照してください。

WebLogic Server モジュール内から POP3 サーバで受信したメッセージを読み込む手順は次のとおりです。

  1. JNDI (ネーミング)、JavaBean Activation、JavaMail パッケージをインポートします。java.util.Properties: もインポートします。
  2. import java.util.*; 
    import javax.activation.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.naming.*;
  3. JNDI でメール セッションを次のようにルックアップします。
  4. InitialContext ic = new InitialContext();
    Session session = (Session) ic.lookup("myMailSession");
  5. Administration Console で設定したセッションのプロパティをオーバーライドする必要がある場合は、Properties オブジェクトを作成してオーバーライドするプロパティに追加します。getInstance() を呼び出して、新しいプロパティの新しいセッション オブジェクトを取得します。
  6. Properties props = new Properties();
    props.put("mail.store.protocol", "pop3");
    props.put("mail.pop3.host", "mailhost");
    Session session2 = session.getInstance(props);
  7. セッションから Store オブジェクトを取得し、connect() メソッドを呼び出してメール サーバに接続します。接続の認証を行うには、接続メソッドでメールホスト、ユーザ名、およびパスワードを提供する必要があります。
  8. Store store = session.getStore();
    store.connect(mailhost, username, password);
  9. デフォルト フォルダを取得し、そのフォルダを使用して INBOX フォルダを取得します。
  10. Folder folder = store.getDefaultFolder();
    folder = folder.getFolder("INBOX");
  11. フォルダ内のメッセージを、メッセージの配列に読み込みます。
  12. Message[] messages = folder.getMessages();
  13. メッセージの配列にあるメッセージを処理します。メッセージ クラスには、ヘッダ、フラグ、メッセージの内容など、メッセージのさまざまな部分にアクセスできるメソッドがあります。

IMAP サーバからのメッセージの読み込みは、POP3 サーバからのメッセージの読み込みと同様です。ただし IMAP の場合は、フォルダを作成および操作し、フォルダ間でメッセージを転送するメソッドが JavaMail API で提供されています。IMAP サーバを使用すると、POP3 サーバを使用する場合よりも少ないコードで、多機能な Web ベースのメール クライアントを実装できます。POP3 では、おそらくデータベースまたはフォルダを表すためのファイル システムを使用して、WebLogic Server からメッセージ ストアを管理するコードを記述する必要があります。


ページの先頭       前  次