Tuesday, August 24, 2010

Gmail のリッチテキストメールと Mms.apk

GmailでリッチテキストメールをMMSアドレスに送ると文字化けするという話を聞いております。

先ごろ、frameworks/baseの変更で、multipart/alternativeのHTMLメールについてHTML部分を利用するようになり、HTMLで表現されたテキストが表示できるようになりました。(というかそもそもHTML対応していたけどmultipart/alternative時は無視するように変更していた)

この変更はCM6のframeworks/baseにも適用されており、non-cm-froyoのMms.apkにはまだ適用していません。

しかしながら、GmailでリッチテキストメールをMMS宛に送ると、HTMLパートのcharsetが"PDC"というものになり、これを解釈できないクライアントは文字化けを起こします。普通、解釈できません。

これまで拙作のMms.apkなどではHTML部分を利用せず、text部分(multipart/alternativeの最初のパート)を利用しており、こちらはUTF-8のままなので、問題ありませんでした(ただしHTML装飾は適用されない)。

charset=PDCなんてのはSBMの特殊なケースでしか利用されておらず、そもそもInvalidな文字セットなので解決するにはとても面倒な手順を踏まなくてはなりません。(iso-2022-jpなのかShift_JISなのかUTF-8なのかもわからない)
よって、あきらめることにします。

ちなみにcharset=PDCになる条件は、リッチテキスト形式で、テキストに装飾をし、絵文字を使う という3つが重なった場合のようです。
試しに同様のメールをiPhone宛に送ってみると受信すらできませんでした。

楽天からの携帯向け絵文字入りHTMLメールは正しく表示できました。
live.jpからの同様のメールは化けませんでしたが、変なタグが挿入されました。絵文字は画像として入ってるようで表示できませんでした。
ほかのメールサービスからのリッチテキストメールについてはわかりません。

その他、auからの画像添付メールが差出人アドレス非表示になるとかは確認していてデバッグ中ですが、直るかわかりません。

No comments: