. . . Properties props = System.getProperties(); props.put("mail.smtp.host","xxxxxx.xxxxxx.co.jp"); Session session = Session.getDefaultInstance(props,null); MimeMessage message = new MimeMessage(session); . . . message.setText(text, "iso-2022-jp"); . . . Transport.send(mimeMessage);
メール本文は MimeMessage.setText で本文とエンコーディングを指定してセットします。
一般的に日本語メールの場合、JIS(iso-2022-jp)を指定しますが、JavaMail の JISエンコーディングに問題があるため、上記のような現象が起こるようです。
この現象は、Java の標準機能を利用して JISエンコーディングを行うことによって解消しました。
message.setText(new String(text.getBytes("iso-2022-jp")), "iso-2022-jp");
ただ、この現象は Thunderbird など、一部のメーラーで受信した場合にしか起こりません。
そのため、テストで見逃す可能性大です。
すべてのメーラーで受信テストを行うのは実質的に不可能かもしれませんが、受信するメーラーがある程度絞れる場合は、それらすべてのメーラーで受信テストをしておいたほうがよさそうですね。