| <- はじめに |
Session
オブジェクトを作成します。Sessionオブジェクトは直接newで作成することはできず、必ずstaticメソッド
getInstance()メソッド、または
getDefaultInstance()メソッドを呼び出して作成します。
public static Session getInstance(java.util.Properties props,
Authenticator authenticator)
public static Session getDefaultInstance(java.util.Properties props,
Authenticator authenticator)
Propertiesオブジェクトを指定します。ここで指定した内容に基づき、JavaMailの各クラスの動作を指定します。System.getProperties()を渡しておけば良いみたいです。javax.mail.Authenticator
を指定するようになっています。(このAuthenticatorは、Java2から導入されたjava.net.Authenticatorとは別物です)
ここで指定したAuthenticatorオブジェクトは、メールサーバからの認証が要求された際に、JavaMailから使用されます。
JavaMailは、認証に必要となるユーザID/パスワードの組み合わせを、Authenticatorに問い合わせます。
問い合わせを受けたAuthenticatorオブジェクトは、ユーザID/パスワードを含んだ
javax.mail.PasswordAuthentication
オブジェクトを返します。
(このPasswordAuthenticationは、Java2から導入されたjava.net.PasswordAuthenticationとは別物です)
このように、ユーザID/パスワードを指定する方法がAuthenticatorという形で分離されているおかげで、
認証方法を割と自由に設定できるようになっています。
例えば、設定ファイルからユーザID/パスワードを読み込んでもよいし、ICカードによる認証も考えられます。
プログラマは、任意の方法でPasswordAuthenticationを作成するAuthenticatorのサブクラスを定義し、
Sessionのインスタンスを作成する際に引数として渡せば良いわけです。
Authenticatorのサブクラスを作ってみました。// SimpleAuthenticatorをインポートする。
import jp.gr.java_conf.roadster.beans.mail.SimpleAuthenticator;
//...
// Authenticatorオブジェクトを作成する。
Authenticator auth = new SimpleAuthenticator(frame); // frame は親Frameのインスタンス
Session session = Session.getInstance(props, auth);
| <- はじめに |