JavaMailでドコモ端末に絵文字付きsubjectを送る

 本文に絵文字や半角カナを入れるのは

  message.setText(body, "Windows-31J");

 で問題ないが、subjectはうまくいかん。これは、携帯電話は=?Windows-31J?を処理できないらしいというところで、Windows-31Jから適切なコンバータを選べないみたい。
 逆に、Javaは、というとi-modeの絵文字はいわゆる外字領域なので、Shift-JISだとSJISコンバータになってしまう(j2seのバージョン依存だけど)ので、絵文字が欠落(化け)するということになる。
 んで、どうしているかというと、

 String raw = MimeUtility.encodeText(subject, "Windows-31J", "Q");
 raw = raw.replaceAll("Windows-31J", "Shift-JIS");
 message.setSubject(raw);

 なんてことをしている。うーん。すっごい強引。でもいまのところこれが一番うまくいってるような気がする(笑)

 ま、これも誰かの役に立つかもしれない?