blogPHPでWEB+DBシステムの開発をやっています。MMSから送信されたメールをプログラム等で処理する際の注意点です。iScreenShotではiPhone/iPadからの投稿方法としてメールがあるのですが、処理できないメールがありました。これを調べていったところ、行き着いたのがMMSでした。MMSからのメールについて分かったことを残しておきます。サーバ構成や変換処理などは、外部からの推測なので実際とは異なるかもしれません。以後の「外部メールサーバ」には、docomo、auなど「携帯キャリアのメールサーバ」は含みません。携帯キャリア間では専用の制御が入っている(入る)可能性があるのでご注意を。MMSって?まずMMSについてですが、これについては各所に情報があるので、ここでは割愛します。MMS送信から外部メールサーバへ届く流れをざっくり図にすると以下のようになります。送信したMMSを外部メールサーバで受信するMMSを外部メールサーバに送信する際は、MMSサーバがメールに変換を行って、SMTPで外部メールサーバへ送信します。(図、赤枠)この変換をMMSサーバをやってくれるおかげで、外部メールサーバはMMSを単なるメールとして処理することができます。変換によって、MMSの件名はSubjectヘッダに、本文はメールボディに格納されます。本文を記述して、画像を添付した際はmultipartなメールとなります。通常のメールと同じ形式になるので、実は受信側ではそれほど意識することなく処理することができます。いくつか注意点があります。件名はデフォルトオフiPhoneのSMS/MMSアプリでは、MMSの件名がデフォルトではオフになっています。よってMMSアプリで入力するテキストは本文として送信されます。ちなみに件名はiPhoneの設定によってオンすることができます。件名、本文はISO-2022-JPになるiPhoneのSMS/MMSアプリでは、絵文字等も使えるので一見UTF-8のように思うのですが、外部メールサーバへ送信される際は、ISO-2022-JPに変換されます。メールアプリでは、UTF-8な文字が含まれる場合はそのままUTF-8で送信されてくるのですが、MMSでは(おそらくMMSサーバによって)ISO-2022-JPに変換されます。本文ナシで画像を送るとmultipartにはならないiPhoneのSMS/MMSアプリでは、本文を未入力で画像のみを送ると、multipartにはなりません。これは、件名のみを入力した場合も同様です。実際に、件名のみ+画像を送信した際のメールヘッダが以下です。Content-Typeを見ると「image/png」になっています。メールを使った画像送信というと、multipartなメールを思い浮かべるのですが、こういったパターンもあるということを想定しておく必要があります。画像が自動縮小される場合があるiPhone4からMMS送信を試して分かったのですが、本来640×960の画像をMMSで送信すると、320×480に縮小される場合があります。これはおそらくMMSの300k制限によるもので、300kを超えている画像が縮小されました。逆に300k未満の画像については、そのままのサイズで送信されました。ソフトバンクモバイルMMSアプリなら画像添付できる正直、iScreenShotを作るまで、iPhoneのSMS/MMSアプリは全く使っていませんでした。アプリもホーム画面3ページ目くらいのよく分からないフォルダに押し込んでいます:D今回の件で触ってみたのですが、これはこれで便利ですね。送信履歴が一画面で見られるので、どの画像を投稿してきたのが見やすいですし、何よりアプリで直接画像を添付できるのが有り難いです。件名がデフォルトでオフというのが難点ですが、今後も使ってみようと思います。23:26これはおそらく、ソフトバンクのMMSサーバーだからISO-2022-JPになってるんですよね。多言語対応する際の検証方法があればいいのですが...。10:15アキラさん:おそらくそういった仕組みでしょうね。メッセージにUTF-8な文字が含まれているか否かに関わらず、一括でISO-2022-JPに変換しているようです。