tomi-ruのモバイル日記

profile
記事とカテゴリ一覧はこちら
 | 

2008-08-01

メールの受信における本文のdecode

| 00:03 | はてなブックマーク - メールの受信における本文のdecode - tomi-ruのモバイル日記

http://mobilehacker.g.hatena.ne.jp/tokuhirom/20080729/1217321096

のように楽できると思って、メールから投稿できるものを作りかけてみたのだけど、問題がありました。メールは、送信時と受信時で使うエンコーディングが違う問題です。

Email::Address::JP::Mobile でたとえば au だと mail_encoding は x-sjis-kddi-auto を返しします。これは送信する時(encode)には良いのですが、受信の時(decode)はこれじゃなくて x-iso-2022-jp-kddi-auto あたりを使いたいところですよね。。

  • 送信も受信と同じエンコーディングを使えばいいじゃないか。つまり、auの場合送信で x-iso-2022-jp-kddi-auto を使えばいい? →なんか理由があってこれはおすすめとは言えなかった気がします。たしかauの絵文字しか使えないからとかだったような。
  • encodeはiso-2022-jpで、decodeはsjisでやるというエンコーディングをつくるのは明らかにきもいよな
  • mime_encoding も送信用として MIME-Header-JP-Mobile-SJIS-Ezweb を返します。ただ受信(decode)の場合、もともとMIMEが Subject: =?iso-2022-jp?B?xxxx=?= ?shift_jis?B?xxxx=?= と一つのヘッダに複数のエンコーディグが混じることもあるためオールマイティになっているのでたまたま問題ない。

send_encoding() とかを新設するのがいいのか。

  • mime_encoding() - 送信・受信用MIMEエンコーディング
  • mail_encoding() - 受信用エンコーディング
  • send_encoding() - 送信用エンコーディング

だんだんきもくなってくる。しかたないか。しかもこれだけがんばっても絵文字が取れるのはauだけという悲しさです。

Email::MIME::JP::Mobile とかが受信や送信で裏でうまくやってくれるといいのかもしれないすねえ。

とりあえず MobileCat では

http://coderepos.org/share/browser/websites/mobilecat/trunk/lib/MobileCat/Controller/API/Mail/Post.pm#L22

のようにエンコーディングを探してdecodeしています。

トラックバック - http://mobilehacker.g.hatena.ne.jp/tomi-ru/20080801
 |