iPhoneへ絵文字メールを送信するには

By uchida - 09/03/19 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

最近iPhoneメールで絵文字に対応したというニュースがありました。
そこで、PHPで送信した絵文字メールをiPhoneで受信できるか挑戦してみました。

まず、絵文字をバイナリコードで記述してSJISで送信してみました。ke-tai.org様より参考にさせて頂きました。
ke-tai.org > Blog Archive > ケータイに絵文字入りメールを送信するには(SoftBank編)

まず、こちらで紹介されている方法を試してみました。
結果、SoftBankの携帯に絵文字を送信できるのは確認できましたが、iPhoneだと文字化けしてしまいました。
 
 


 
 
そこで、他のサイトを探していると、3G携帯や2G携帯でもうまくいく方法を紹介しているエントリがありました。
SoftBankで絵文字メールを送る方法 – maru.cc@はてな
これなら、iPhoneでも表示されるかもと試してみました。

方法はバイナリデータにpackしてUTF-8でメールを送る方法です。

== UTF-8 ==

//エンコード変換
$subject = mb_convert_encoding($subject, "UTF-8", "auto");
$body = mb_convert_encoding($body, "UTF-8", "auto");
        
//絵文字をつけています
$subject = pack("H*", "EE9185") . $subject . pack("H*", "EE8CB7");
$body = pack("H*", "EE9185") . $body . pack("H*", "EE8CB7");
        
// MIMEエンコーディングを行う
$subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
$body = base64_encode($body);
        
// ヘッダを作成
$headers = "From:{$from}\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
$headers .= "Content-Transfer-Encoding: base64";
        
//メール送信
$res = mail($to, $subject, $body, $headers);

結果こちらの方法で絵文字メールをiPhoneに表示することが出来ました。
うまくいかない時は、iPhoneのオリジナル絵文字コードとかあるのかと思いましたが、そういう訳ではなくUTF-8で送ってあげれば他のソフトバンクと同じコードで表示できるというとこでした。
 
maru.cc様 ke-tai.org様 有益な情報ありがとうございます。