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);
なんてことをしている。うーん。すっごい強引。でもいまのところこれが一番うまくいってるような気がする(笑)
ま、これも誰かの役に立つかもしれない?