- ベストアンサー
メール送信での文字化けとは?
- ホームページから入力ホームに記入してもらい、送信するとphpを使用してメールを送信するプログラムを書いていますが、メールを送信するとメールの内容に文字化けが発生してしまいます。
- 入力ホームのページからutf-8で統一すれば文字化けなくメールを送信することができましたが、仕様の条件としてshift-jisにするとありますので、入力ホームはshift-jisにしてあります。
- どうすればよいでしょうか?どうか教授ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まず日本語のエンコードを気にするならmb_send_mail()は使わない方がいいですね エンコードの指定は多少面倒ですが自前でエンコードして mail()か、PEAR::Mailを利用するといいでしょう http://www.php.net/manual/ja/function.mail.php http://pear.php.net/manual/ja/package.mail.mail.php メール本文は7ビットJISに変換してから送るのが基本です その他のエンコードの場合、メールヘッダでContent-Transfer-Encodingを 指定してやると精度があがるとおもいますよ
その他の回答 (2)
- shimix
- ベストアンサー率54% (865/1590)
ANo.2です。 >$messageのうち、全部が化けています。 ファイルに落としたときにはどうなっていますか?あるいは画面に表示させてブラウザのエンコードをShift_JISにして確認してもいいです。 $messageの中身がShift_JISで、マルチバイト系の設定 mb_language('ja'); mb_internal_encoding('SJIS'); をこれ以降変えていない(requireしたスクリプトでも触っていない)ということであれば、mb_send_mailの問題ですが、そもそも$messageの中身がShift_JISになっていないのであればmb_send_mail以前の問題です。 まずはそれを切り分けてください。
- shimix
- ベストアンサー率54% (865/1590)
基本的には mb_language('ja'); mb_internal_encoding('SJIS'); があるので、化ける可能性は低いハズですけどね(phpスクリプトは間違いなくShift_JISですよね)。$messageのうち、どの部分が化けていますか。それとも全部ですか。$messageの内容をファイルに書き出して「Shift_JIS」になっていることを確認してください。 #なお$message_adminの中身は推測できません。また$fromの内容は #転記するときに書き替えたんですよね(このままだとは思えないので)。
補足
回答ありがとうございます。 phpスクリプトは間違いなくShift_JISになっています。 $messageのうち、全部が化けています。 fromの内容は転記するときに書き替えてます。 よろしくお願いいたします。