- ベストアンサー
メール送信プログラム
いつもお世話になっております。 今まで動いていたメール送信のプログラムが正常に動かなくなりました。メールは送信されるのですが、ボディーの箇所とヘッダーの箇所の変数部分にあたるところが空白になってしまいます。 今までは正常に動いていたんです、SJISからUTF-8に移行したからなんでしょうか? 本番環境(SJIS)(サーバー:ロリポップ)のほうもなぜかいじっていないのにちゃんと動作しなくなっています。 以下、ロジックです(UTF-8にしたもの)。 <?php mb_language("Ja"); mb_internal_encoding("UTF-8"); $to = "test@test.com"; $title = "お問い合わせ"; $body = "■名前\n$contact_name\n ■メールアドレス\n$contact_email\n ■お問い合わせ内容\n$contact_naiyou\n"; $headers = "From:$contact_name<$contact_email>"; if(mb_send_mail($to, $title, $body, $headers)) { print "お問い合わせありがとうございます。"; } else { print "送信出来ませんでした。"; } ?> 推測されること等ありましたら、ご教授よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
mb_encode_mimeheaderを使用してみたらいかがでしょうか。
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6290)
> SJISからUTF-8に移行したから 正常・異常の前後で変えたところがこれだけならば、 これが原因である確率が高いと思います。 UTF-8に変更しなければならない差し迫った理由があったのでしょうか? ちなみに、(日本語の情報を含む)メールの標準的なコード体系は JISのはずです。
お礼
ありがとうございました。
補足
ご回答ありがとうございます。 UTF-8に変更しなければならない差し迫った理由があったのでしょうか? 差し迫った理由はありませんが、今後開発をUTF-8で進めていくつもりなので、ちょっと変更してみました。 一応、一つの問題は解決しました。 原因はきちんとフォームの値を変数に取り込んでいなかったことだと思います。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } を追加して、一応メールの中身もちゃんと見れるようになりました。 なくても今まで動いていたのはバグだったんでしょうか?・・・ ただし、一点問題が。 メールのヘッダー、FROM:名前 ←の箇所のところだけが文字化けしてしまいました。 いろいろいじって直すつもりですが、ご教授あればよろしくお願いします。
お礼
ご回答ありがとうございます。 mb_encode_mimeheaderを使って出来ました。