[PHP-users 20862]携帯に半角カナ・絵文字を配信する際について

konet218 @ ybb.ne.jp konet218 @ ybb.ne.jp
2004年 3月 20日 (土) 17:36:57 JST


近藤と言います、宜しくお願いします。

【環境】
PHP 4.3.1
ソースはShift-JISで記述しています

PHPから携帯向けにメールを配信したいのですが、
半角カナも正常に送れる様にしたいと言う考えから
色々とテストをしていまして、

      $subject = "これはテストです(ハート)";  // 「テスト」は半角カナ

      $mail_body = base64_encode("ハロー(ハート)テストメールだよ(ハート)");  // カナは全て半角カナ

      $header  = "From: $From.\n";
      $header .= "Return-Path: $From.\n";
      $header .= "Reply-To: $From.\n";
      $header .= "Message-ID: {$MessageID}\n";
      $header .= "MIME-Version: 1.0\n";
      $header .= "Content-Type: text/plain;charset=Shift-JIS\n";
      $header .= "Content-Transfer-Encoding: base64\n";
      $header .= "X-Mailer:PHP/".phpversion();

      mail(...);

ってな感じのヘッダでタイトル、本文共に半角カナを正常に配信出来ました。

# DoCoMoとAU端末で確認済み。
# 絵文字に関してはDoCoMoには正常に表示され、
# AU端末の場合は空白になります。
# DoCoMoの絵文字なので当然ですが・・・。

・・・が、本来メールをSJISで送るのはどうかと思っております。

そこで、
      $header .= "Content-Type: text/plain;charset=Shift-JIS\n";
             ↓
      $header .= "Content-Type: text/plain;charset=ISO-2022-JP\n";
と、ここだけ変更した所、文字化け発生。

さらに、
      $header .= "Content-Type: text/plain;charset=Shift-JIS\n";
      $header .= "Content-Transfer-Encoding: base64\n";
             ↓
      $header .= "Content-Type: text/plain;charset=ISO-2022-JP\n";
      $header .= "Content-Transfer-Encoding: 7bit\n";

      $mail_body = base64_encode("ハロー(ハート)テストメールだよ(ハート)");
             ↓
      $mail_body = mb_convert_encoding("ハロー(ハート)テストメールだよ(ハート)","ISO-2022-JP","SJIS");
と、変更したらもちろん文字化け発生。

# 私の認識ではSJISで送らなければ絵文字は文字化けすると
# 思っているのですが勘違いでしょうか?

また、Vodafoneの公式サイトでは、ヘッダの例として、
      $header .= "Content-Type: text/plain;charset=ISO-2022-JP\n";
      $header .= "Content-Transfer-Encoding: 7bit\n";
と、出てました。

実機が手元にないので確証は持てないのですが、上記のヘッダだと、
半角カナは送る事が出来ないのでは?と思っております。

ですので、
      $header .= "Content-Type: text/plain;charset=Shift-JIS\n";
      $header .= "Content-Transfer-Encoding: base64\n";
で、対応しようと思っているのですが、ここでご質問です。
# 長々とすみません。

例えばDoCoMo端末の場合はある程度設定がラフでも正常に配信出来てしまいます。
「たまたま正常に配信出来た」と言う事はさけ、「この設定なら大丈夫」と
言う、ヘッダ、文字エンコード方法はどのようにすれば宜しいのでしょうか。

# 出来れば3キャリアに対応させたい・・・。

要望としては、タイトル・本文ともに、半角カナ・絵文字入りのメールを
PHPから配信し、文字化けする事なく表示させたいのです。

皆様も少なからず、モバイル向けのサイトは構築されていると思うのですが、
メールを配信する際にはどの様にされていますでしょうか?

参考WEBサイトでも宜しいので宜しくお願い致します。




PHP-users メーリングリストの案内