• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP mb_send_mail関数 の文字化け)

PHPのmb_send_mail関数でメールフォームを作成した時に文字化けする理由はなぜでしょうか?

このQ&Aのポイント
  • ホームページ作製の祭にmb_send_mail関数を使ってmailフォームを作ったのですが、送信はされているのですが、mailフォームのアドレスを記入するところにひらがなやデタラメなアドレスを入れると、Outlook で受信すると送信者覧の所だけ、文字化けします。
  • メール本文に表示されているデタラメなアドレスはそのまま表示されるのですが、なぜでしょうか?
  • PHPの設定が原因かOutlookが原因か、サーバーの問題なのか理由がわかりません。

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

  • ベストアンサー
  • takapiii
  • ベストアンサー率55% (944/1707)
回答No.1

ヘッダーはMIMEが必要ですが、処理していますか? 通常Fromは以下のようになります。 $headers .= "From: ".mb_encode_mimeheader (mb_convert_encoding($from_name,"ISO-2022-JP","AUTO")) . "<".$from_email."> \n"; マニュアルのサンプルコードを確認してください。 http://php.net/manual/ja/function.mb-send-mail.php

2009matsu
質問者

お礼

回答有難うございます。 自分の思いつくように、 下記のように単純に変更してみたら一応送信できました。 しかし、PHP初心者なものでこれで正しいのか分かりません。 このような記述はおかしいのでしょうか?? <?php // メール送信先 $to = "○○@○○.jp"; 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(); } $frommime = mb_encode_mimeheader($from); $naiyou = "お名前:$name\n メールアドレス:$from\n タイトル:$title\n 内容:$naiyou\n"; if ($name != "" and $from != "" and $title != "" and $naiyou != "" ) { if (mb_send_mail($to, $title, $naiyou, "From:$frommime<$from>")) { echo "<br />メールを送信しました。"; } else { echo "<br />メール送信失敗です。"; } } ?> --------------------------------------- 自分で変更しときながら分からないところがあるのですが、 if (mb_send_mail($to, $title, $naiyou, "From:$frommime<$from>")) の記述ですが、 <>で$fromを囲むとその部分が非表示になるということなのでしょうか?... <$from>を記述しないとサーバーのドメイン?のようなものが送信者アドレスの後に付随してくるのですが... それと、 自分がこんな書き方しか思いつかなかったからなのですが、 $frommime = mb_encode_mimeheader($from); で $fromを エンコードして$frommimeに代入しているのに、その後にまた$fromを使ってるのが、何かきしょく悪くてしっくりこないのですが(苦笑) おかしいことではないのでしょうか??

関連するQ&A