8.2.1 SMTPサーバに接続するためのセッションプロパティ
ここでは,SMTPプロバイダおよびSMTPSプロバイダ独自のセッションプロパティについて説明します。
SMTPプロバイダおよびSMTPSプロバイダ独自のセッションプロパティの一覧を次の表に示します。
項番 |
プロパティ |
デフォルト値 |
有効な指定値 |
無効な値を指定した場合の動作 |
---|---|---|---|---|
1 |
false |
true,false (大文字と小文字の区別はなし) |
メールサーバへの送信処理でメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
2 |
false |
true,false (大文字と小文字の区別はなし) |
メールサーバとの接続処理でメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
3 |
0 (無限待ち) |
0〜2147483647 (単位:ミリ秒) |
メールサーバとの接続処理でメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
4 |
なし |
|
指定した値をそのまま使用します。 メールサーバ側で不正と見なした場合は,RCPTコマンドが失敗し,メール送信処理が中断します。 メールサーバの処理は,メールサーバに依存します。 |
|
5 |
なし |
FULL,HDRS |
指定した値をそのまま使用します。 メールサーバ側で不正と見なした場合は,MAILコマンドが失敗し,メール送信処理が中断します。 メールサーバの処理は,メールサーバに依存します。 |
|
6 |
true |
true,false (大文字と小文字の区別はなし) |
メールサーバとの接続処理でメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
7 |
<mail.form>に指定した値 |
文字列 |
JavaMail,またはメールサーバから例外が返る可能性があります。メールサーバがどのような場合に例外を返すかは,メールサーバに依存します。 |
|
8 |
java.net.InetAddress.getLocalHost().getHostName()の戻り値 |
文字列 |
指定した値をそのまま使用します。 |
|
9 |
true |
true,false (大文字と小文字の区別はなし) |
javax.mail.Transportオブジェクト取得時にメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
10 |
false |
true,false (大文字と小文字の区別はなし) |
javax.mail.Transportオブジェクト取得時にメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
11 |
なし |
文字列 |
指定した値をそのまま使用します。 |
|
12 |
false |
true,false (大文字と小文字の区別はなし) |
メールサーバへの送信処理でメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
13 |
0 (無限待ち) |
0〜2147483647 (単位:ミリ秒) |
メールサーバとの接続処理でメッセージKDJE59100-Wを出力します。 値は,デフォルト値を使用します。 |
|
14 |
TLSv1 |
javax.net.ssl.SSLSocket.setEnabledProtocolsメソッドに設定できる値 |
javax.net.ssl.SSLSocket.setEnabledProtocolsメソッドに設定できない値を指定した場合,メールサーバとの接続処理で例外(java.lang.IllegalArgumentException)が発生します。 また,接続先のメールサーバが許容していないバージョンを指定した場合,メールサーバとの接続処理で例外(javax.mail.MessagingException)が発生します。 |
|
15 |
なし |
javax.net.SocketFactoryクラスのクラス名,またはjavax.net.SocketFactoryクラスを継承したクラスのクラス名 |
メールサーバとの接続処理で例外(javax.mail.MessagingException)が発生します。 |
それぞれのプロパティについて,以降で説明します。
- 〈この項の構成〉
-
(1) mail.smtp.allow8bitmime
quoted-printableやbase64エンコーディングを使用するメッセージのテキスト部分を,8ビットエンコーディングへ変換するかどうかを指定します。
trueを指定した場合,次の条件を満たしていれば,quoted-printableやbase64エンコーディングを使用するメッセージのテキスト部分は8ビットエンコーディングへ変換されます。
-
サーバが8ビット転送をサポートしている
-
quoted-printableやbase64エンコーディングを使用するメッセージのテキスト部分がRFC2045に準拠している
falseを指定した場合は,8ビットエンコーディングへは変換しません。
(2) mail.smtp.auth
AUTHコマンドを使用したユーザ認証をするかどうかを指定します。
trueを指定した場合,AUTHコマンドを使用してユーザ認証をします。falseを指定した場合,AUTHコマンドを使用したユーザ認証はしません。
(3) mail.smtp.connectiontimeout
コネクション確立までのタイムアウト時間(単位:ミリ秒)を指定します。
0を指定すると,無限に待ち続けます。
このプロパティが指定されている場合,スレッドを使用してタイムアウト時間を監視します。ポリシーやシステムの制限でスレッドが作成できない場合は,タイムアウト時間を監視しません。
タイムアウト時間が,OSのTCPの再送タイマによるタイムアウト時間より大きいか,またはタイムアウト監視をしない設定の場合,TCPの再送タイマによるタイムアウト時間が有効となります。なお,再送タイマによるタイムアウトは,OSによって異なります。
(4) mail.smtp.dsn.notify
RCPTコマンドのNOTIFYオプションを指定します。
このオプションはDSN(Delivery Status Notification:配送状態通知)を生成する条件を指定します。コンマを区切りにして,次の表に示す値を組み合わせて指定できます。
項番 |
値 |
指定される内容 |
---|---|---|
1 |
NEVER |
配送状態に関係なく,送信者にDSNを返さない。 |
2 |
SUCCESS |
メッセージの配送が成功した場合,DSNを生成する。 |
3 |
FAILURE |
メッセージの配送が失敗した場合,DSNを生成する。 |
4 |
DELAY |
メッセージの配送が遅延した場合,DSNを生成する。 |
指定しない場合のDSN生成については,RFC1891ではNOTIFY=FAILUREまたはNOTIFY=FAILURE,DELAYとして指定されたと解釈してよいとされており,サーバの実装に依存します。
(5) mail.smtp.dsn.ret
MAILコマンドのRET追加パラメタ値を指定します。
次の表に示す値を組み合わせて指定できます。
項番 |
値 |
指定される内容 |
---|---|---|
1 |
FULL |
配送失敗通知メッセージに送信メッセージ全体を含める。 |
2 |
HDRS |
配送失敗通知メッセージに送信メッセージのヘッダだけを含める。 |
プロパティを指定しない場合,配送失敗通知メッセージに何が含まれるかは,サーバの実装に依存します。
(6) mail.smtp.ehlo
EHLOコマンドを使用するかどうかを指定します。
trueを指定した場合,EHLOコマンドを使用します。EHLOコマンドでエラーが発生した場合,代替にHELOコマンドを使用します。falseを指定した場合,EHLOコマンドは使用しません。
(7) mail.smtp.from
SMTPおよびSMTPSのMAILコマンドのreverse-pathに使用する電子メールアドレスを指定します。
(8) mail.smtp.localhost
SMTPおよびSMTPSのHELOコマンドまたはEHLOコマンドで使用されるローカルホストのドメイン名を指定します。
JDKおよびネームサービスが適切に定義されている場合,指定する必要はありません。
(9) mail.smtp.noop.strict
メールサーバとのコネクション状態を確認する場合,接続状態と判定するレスポンスを変更する時に使用します。
trueを指定した場合は,NOOPコマンドに対するメールサーバからのレスポンスが250の時に接続状態と見なします。falseを指定した場合は,NOOPコマンドに対するメールサーバからのレスポンスが,421を除く正の整数値の時に接続状態と見なします。
(10) mail.smtp.quitwait
QUITコマンドに対する応答を待つかどうかを指定します。
trueを指定した場合は,QUITコマンドに対する応答を待ちます。falseを指定した場合は,QUITコマンド送信直後にコネクションをクローズします。
(11) mail.smtp.saslrealm
DIGEST-MD5認証で使用するレルムを指定します。
省略した場合,サーバからのチャレンジに含まれる最初のレルムを使用します。チャレンジにレルムが含まれていない場合,接続先ホスト名をレルムとして使用します。
(12) mail.smtp.sendpartial
メッセージに指定されている電子メールアドレスに,正しくない電子メールアドレスが含まれている場合の動作を指定します。
trueを指定した場合は,メッセージを送信した上で,エラーになった電子メールアドレスをSendFailedExceptionで報告します。falseを指定した場合は,メッセージを送信しません。
(13) mail.smtp.timeout
SMTPサーバとの通信(read)のタイムアウト時間(単位:ミリ秒)を指定します。
0を指定すると,無限に待ち続けます。
タイムアウト時間が,OSのTCPの再送タイマによるタイムアウト時間より大きいか,またはタイムアウト監視をしない設定の場合,TCPの再送タイマによるタイムアウト時間が有効となります。なお,再送タイマによるタイムアウトは,OSによって異なります。
(14) mail.smtp.ssl.protocols
メールサーバとのSMTPS通信でのSSLのバージョンを指定する場合に使用します。
指定する値は,javax.net.ssl.SSLSocket.setEnabledProtocolsメソッドに設定できる値です。また,複数の値を指定する場合は,空白区切りで指定します。指定できる値についてはJDKのドキュメントを参照してください。
指定できる値の例を次に示します。
-
TLSv1.2
-
TLSv1.1 TLSv1.2
(15) mail.smtp.socketFactory.class
SMTP通信およびSMTPS通信で使用するソケットオブジェクトの生成に使用する,javax.net.SocketFactoryクラスのクラス名,またはjavax.net.SocketFactoryクラスを継承したクラスのクラス名を指定します。
このセッションプロパティを省略,または上記以外の不正なクラス名を指定した場合,通信時のSocketオブジェクトはjava.net.Socketをデフォルト値として使用するため,SMTPS通信時にはこのセッションプロパティを使用して,SSL通信が可能なSocketオブジェクトを生成するSocketFactoryのクラス名(例:javax.net.ssl.SSLSocketFactory)を指定してください。