メーラ第一段階完了

JavaMailによるメーラ作成だが、サンプルをいじっていて、メール一覧のFromの表示(エンコードされた日本語が含まれるFromの表示)に成功した。
これは意外と面倒で、長いと複数行に分けてエンコードしてくるはずだから再帰メソッドにしてみたりとか、JavaMailのdecodeメソッドに渡せるのは、全体ではなく、文字コードやエンコードを除いた本体だけなので分割処理が必要とか。
一番悩んだのがその分割処理。「?」で分割されているので、単純そうなのだが、Stringクラスのsplitメソッドを使おうと思ったらパラメータは正規表現。残念ながら、正規表現で「?」そのものを表す表現が分からなかった。繰り返しのメタキャラクタなのだ。
仕方ないからindexOfメソッドで地味に分割。Base64エンコーディングは簡単だったのだが、quote-printableエンコードは苦労した。エンコード文字列は、「?=」で全体が終わる。そこで、これを検索していたのだが、quote-printableエンコードの時、エンコード指定の「Q」の次の区切りの「?」に続く文字はエンコードされた「=」なのだ。機械的に処理していいかわらないけれども、「Q」エンコードの場合は直後の「?=」ではエンコード文字列が終わらないという処理を追加して逃げた。空文字列がエンコードされてきたら終わる。祈るしかない。
次は本文の日本語表示にチャレンジ。残りはプロトコルの参考書を入手してからにする。

コメント