JavaMailで送信する際のヘッダ設定の注意点

iso-2022-jpでメールを送信する際に、日本語が含まれるとquoted-printableで送信される*1

quoted-printableで送信させたくない場合には、明示的にヘッダにContent-Transfer-Encoding:7bitを指定する必要がある。
その場合、MimeMessage#setHeaderでヘッダを指定するのであるが、MimeMessage#setTextを呼び出す後にMimeMessage#setHeaderを呼び出す必要がある。MimeMessage#setHeaderを先に呼び出してしまうと、やはり自動的にエンコードが指定されてしまうので注意。

msg.setText(bodymessage,"ISO-2022-JP");
msg.setHeader("Content-Transfer-Encoding", "7bit");

*1:初期のJavaMailではエンコードされず送信されるバージョンがあり、新しいJavaMailに変更した際によくこの実装の違いで問題になることがあった