mail.smtp.localhostというプロパティに有効なドメイン名を設定すればOKというのは最早有名。
ソースだと以下のような感じ。
Properties props = new Properties();
props.put("mail.smtp.localhost", 有効なドメイン名);
まあ、ここまではよくある話なのだが、S2Maiなど便利なライブラリを利用していると、
一部の用意されているプロパティ以外は、なかなか設定が困難。
ソースを追っかけて、どうにか解析していたのだけど、それよりサーバーの設定見なおした方が早いと判断して方向転換。
同じプログラムでも、表題のエラーが出るサーバーと出ないサーバーがあったのでそっちから攻めてみる。
さて、エラーの原因だが、メールサーバによっては、ドメイン付きホスト名が要求される場合があり、
JavaMail のデフォルトでは そのコンピュータのホスト名がセットされるのが、
これがドメイン付では無い場合に メールサーバへの HELLOコマンド時に拒否される場合があるとのこと。
なるほどね。デフォルトでセットされるコンピュータのホスト名が怪しいね。
早速、動くサーバーと、動かないサーバーの/etc/hosts をチェック。
おー。全然違う。
動くサーバーの関係ありそうなところを真似てみる。
127.0.0.1 test-sv.jp test-sv localhost.localdomain localhost
実行!
動いた!!( ̄ー ̄)ニヤリ
プログラム側の対応もいいけど、サーバー側の対応もいいかもね!
以上!