JavaMail 1.3.1 って

うげぇ。checkAscii の仕様がごそっと変わってたよ…-_-。
触ってなかったとはいえ、今ごろ気付くなって…。

んー事態としては日本にとって好転してはいるわけだが…。
原稿70%くらい書いてから気付くってのもアホだよなT_T。

これだけではなんなので、メモ。

  • 文字列のエンコーディング自動判別において、JavaMail は String(unicode) を検査する場合と、文字エンコード済みのバイト列を検査する場合がある。
  • ヘッダにセットする文字列(Subject/From/To など)、つまり RFC2047 変換を行う場合は unicode ベースの判定メソッドが使われる。従って、1.3.1 では特に意識しなくても"B"エンコーディングになるであろう。
  • 本文のエンコーディング判定にはバイト列(ストリームベース)での ASCII 判定が行われる。後に書くように ASCII 判定基準が変わっているため、ISO-2022-JPバイト列はほとんどの場合 quoted-printable と判定される。
  • 基本的には文字列中の ASCII 文字の比率が 50% を割るか否かで Base64 または quoted-printable を選択する。
  • 特定のバイトが ASCII であるか否かの判定基準が変更されている。以前は 7bitか否かだけであったが、現在は0x20未満は ASCII とみなさない。