• ベストアンサー

携帯へのmail()の書き方

mail()関数を使って携帯端末へメール送信したいのですが、 日本語がうまく送信されません。(英数字や記号は表示されるのですが、日本語が真っ白になってしまいます。) どのような対処をしたら良いのでしょうか? 文字はEUC-JP,SJIS,それからURLエンコード文字の直接埋め込み、を試しましたが、いずれもダメでした。 どなたか有識者の方いらっしゃいましたら宜しくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

まず・・mail()でなくmb_send_mail()を使ってください(mailがmb_send_mailのaliasになっている環境かどうかわからないので)。 スクリプトにmb_languageとmb_internal_encodingはキチンと書いていますか?mb_language('ja')を書いていれば、mb_send_mail()ではmb_internal_encodingで指定した文字コードからiso-2022-jpへ自動変換してくれるようになっています。自前で変換する必要はありません。   http://jp2.php.net/mb_send_mail

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

No.1に追記です PCのメーラは文字コードがおかしくても「どうにかして表示しようと」してくれます。なので多少ヘンなメールでも文字化けしないことが多いですが、それは「正しく送れている」保証にはなりません。一部のメーラでは化ける・・という現象が出てきたりします。 メールヘッダをチェックしておかしな部分がないか確認することはもちろんですが、本来はメールデータ(出来ればPOPサーバから取り出した生のデータ)をチェックして判断する必要があります。 普通ならメーラまかせにする部分ですが、自分のアプリケーションやスクリプトで送信するとなると、そういうこともチェックする必要があります。phpなら(前述の方法であれば)まず大丈夫ですが、本来はそういうものです。

HYSTER
質問者

お礼

ご教示頂いたマニュアルを見て、僕なりに解釈してみたので、 おかしな点があるかもしれませんが、 =========================== <?php $mail_address = ■■; $title = △△; $message = ●● $headers = 〇〇; mb_language('ja'); mb_internal_encoding("euc-jp"); mb_send_mail($mail_address, "$title", $message, $headers); ?> ============================= としたら上手くいきました☆ 全てのキャリアや機種で試した訳では無いので、多少不安ですが・・ shimixさん、どうもありがとうございます☆

関連するQ&A