- Home ›
- JavaMailでメール送信 ›
- メールの送信 ›
- HERE
Sessionクラス
最後にMessageクラスのオブジェクトの引数になっていたSessionクラスについて見ていきます。Sessionクラスのオブジェクトは簡単に言ってしまえば、メールの送信に関するSMTPサーバなどの情報を持っているものと思っていて下さい。まずクラス図から見ていきます。
ToやCcなどを指定する際に使うAddressクラスについて確認します。
- java.lang.Object
- javax.mail.Session
- public final class Session extends java.lang.Object
このクラスにはコンストラクタはありません。使い方としては、Sessionクラスのオブジェクトを返すような下記の2つのメソッドを使ってSessionクラスのオブジェクトを作成すればよさそうです。getDefaultInstanceメソッドとgetInstanceメソッドの2つです。
getDefaultInstance public static Session getDefaultInstance(java.util.Properties props)
Get the default Session object. If a default has not yet been setup, a new Session object is created and installed as the default. Note that a default session created with no Authenticator is available to all code executing in the same Java virtual machine, and the session can contain security sensitive information such as user names and passwords. Parameters: props - Properties object. Used only if a new Session object is created. It is expected that the client supplies values for the properties listed in Appendix A of the JavaMail spec (particularly mail.store.protocol, mail.transport.protocol, mail.host, mail.user, and mail.from) as the defaults are unlikely to work in all cases. Returns: the default Session object
引数にはこのセッションで使われる情報を登録するためのPropertiesクラスのオブジェクトを指定します。JavaMailで提供されているSMTPプロバイダーとしてcom.sun.mail.smtpというパッケージが用意されているのですが、その中で設定項目とその内容について下記のように定義されています。
Name | Type | Description |
---|---|---|
mail.smtp.user | String | Default user name for SMTP. |
mail.smtp.host | String | The SMTP server to connect to. |
mail.smtp.port | int | The SMTP server port to connect to, if the connect() method doesn't explicitly specify one. Defaults to 25. |
mail.smtp.connectiontimeout | int | Socket connection timeout value in milliseconds.Default is infinite timeout. |
mail.smtp.timeout | int | Socket I/O timeout value in milliseconds. Default is infinite timeout. |
mail.smtp.from | String | Email address to use for SMTP MAIL command. This sets the envelope return address. Defaults to msg.getFrom() or InternetAddress.getLocalAddress(). NOTE: mail.smtp.user was previously used for this. |
mail.smtp.localhost | String | Local host name. Defaults to InetAddress.getLocalHost().getHostName(). Should not normally need to be set if your JDK and your name service are configured properly. |
mail.smtp.ehlo | boolean | If false, do not attempt to sign on with the EHLO command. Defaults to true. Normally failure of the EHLO command will fallback to the HELO command; this property exists only for servers that don't fail EHLO properly or don't implement EHLO properly. |
mail.smtp.auth | boolean | If true, attempt to authenticate the user using the AUTH command. Defaults to false. |
mail.smtp.dsn.notify | String | The NOTIFY option to the RCPT command. Either NEVER, or some combination of SUCCESS, FAILURE, and DELAY (separated by commas). |
mail.smtp.dsn.ret | String | The RET option to the MAIL command. Either FULL or HDRS. |
mail.smtp.allow8bitmime | boolean | If set to true, and the server supports the 8BITMIME extension, text parts of messages that use the "quoted-printable" or "base64" encodings are converted to use "8bit" encoding if they follow the RFC2045 rules for 8bit text. |
mail.smtp.sendpartial | boolean | If set to true, and a message has some valid and some invalid addresses, send the message anyway, reporting the partial failure with a SendFailedException. If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address. |
例えば下記のように情報をセットしていきます。
Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.from", from); Session session = Session.getDefaultInstance(props);
必要な情報をセットして、Sessionクラスのオブジェクトを作成するだけです。
またgetDefaultInstanceとgetInstanceの違いが実はよく分かっていないのですが、getDefaultInstanceで得られるセッションは複数作成できないので、複数のセッションを同時に作りたい時はgetInstanceの方を使えばいいのではと思います。
ではgetInstanceメソッドも見ておきましょう。
getInstance public static Session getInstance(java.util.Properties props)
Get a new Session object. Parameters: props - Properties object that hold relevant properties. It is expected that the client supplies values for the properties listed in Appendix A of the JavaMail spec (particularly mail.store.protocol, mail.transport.protocol, mail.host, mail.user, and mail.from) as the defaults are unlikely to work in all cases. Returns: a new Session object
引数の使い方はgetDefaultInstanceと同じです。
なおサンプルプログラムではgetInstanceに2つの引数を渡していますが、同じメソッド名でgetInstance(java.util.Properties props, Authenticator authenticator)というメソッドがあるためです。2番目の引数にはNULLを渡しているように、今は必要無いので、引数が1つの方で説明を行いました。
( Written by Tatsuo Ikura )