• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpについて質問です。)

phpメールフォームの文字化けとセキュリティについて

memphisの回答

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

メールのヘッダーが何も指定してないのが原因です。 メール本文の文字コードを明記すれば解決すると思います。

dhtfyjh
質問者

補足

hedderとは $header = 'From: '. mb_encode_mimeheader($name) . '<' .$email .'>'; これでしょうか?

関連するQ&A

  • phpメール送信

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-S"> <title>お問い合わせフォーム</title> </head> <body> <?php //お問い合わせタイトル、詳細のセット $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); mb_language('ja'); mb_internal_encoding('UTFS'); $name = '自動送信’; $email = '<僕のアドレス>'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; $result = mb_send_mail("<僕のアドレス>", $title, $message, $header); if ($result){  echo '■お問い合わせ内容を担当者に送信しました。’; } else {  echo '■担当者への送信に失敗しました。'; } ?> </body> </html> 何故かエラーになります。原因を教えてください

    • ベストアンサー
    • PHP
  • CGIで自動返信メール

    CGIで自動返信メール サイトに問い合せフォームを作成し 自分宛メールと自動返信メールが送付されるようにしたいです。 CGIの中身を書き換えメールのヘッダに言葉を入れたいのですがうまくいきません。 検証(1)デフォルトの設定 【結果】「送信」ボタンクリック後に出てくる画面と 自分宛メールと 自動返信メールの内容は、回答内容の羅列のみ { &jcode'convert(*subject, "jis"); $mailhead = ""; $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } 検証(2)1行だけ追加 【結果】「送信」ボタンクリック後に出てくる画面の一番上の行に 「お問い合わせありがとうございます」と出て その下に回答内容が羅列されている。 自分宛メールも同様の症状。 自動返信メールは届かない。 { &jcode'convert(*subject, "jis"); $mailhead = "お問い合わせありがとうございます";★ここを変更してみました★ $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } 検証(3)2行追加 【結果】「送信」ボタンクリック後に出てくる画面の一番上の行に 「お問い合わせありがとうございます。 後日担当よりご連絡させていただきます。」と出るが 回答内容は文字化け。 自分宛メールも同様の症状。 自動返信メールは届かない。 (ちなみに検証(2)の「お問い合わせありがとうございます」の文末に 「ありがとうございます。」と「。」を追加しただけでも これと同じ結果になりました) { &jcode'convert(*subject, "jis"); $mailhead = "お問い合わせありがとうございます。 後日担当よりご連絡させていただきます。 ";★ここを変更してみました★ $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } CGIの抜粋がこれだけでは足りないでしょうか? ちなみに自分宛メールはhotmailのアドレスを、 自動返信メールはgoomailを使用しています。

  • phpフォームで携帯へメール送信した場合の文字化け

    過去のよく似た事象を検索しましたが解決しなかったので 質問します。よろしくお願いします。 携帯電話のメールアドレスに送信するWEBフォームをphpで 作成したいのですが、文字化けが直らずに困っています。 コードは次のような感じです。 PCへのメールは文字化けせず、DoCoMoへ送るとsubjectは正常で本文が化けます。 またauとvodafoneへ送るとすべて化けます。 $to = "$_REQUEST['$email']"; $from = "info@aaa.bbb"; $subject = "テスト送信"; $message = "テストメールです" . $headers ='From: '. $from . "\r\n"      .'MIME-Version: 1.0' . "\r\n"      .'Content-Type: text/plain; charset=iso-2022-jp' . "\r\n"      .'Content-Transfer-Encoding:7bit' . "\r\n"      .'X-Mailer: PHP/' . phpversion(); if(mail($to, $subject, $message, $headers)==TRUE) print("メールを送信しました"); else print("メール送信に失敗しました"); 動作環境はSunOS5.7、Apache2.0、php5.0.3です。 コードはEUCで書いています。

    • ベストアンサー
    • PHP
  • 問い合わせフォームからPHPを使って、、、、、

    問い合わせフォームからPHPを使って指定のアドレスにメールを送ろうとしているのですが、届きません、、、、、、 原因が分かりません。助けていただけないでしょうか。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>お問い合わせページ</title> <link rel="stylesheet" href="styles.css"> </head> <body> <h1>お問い合わせページ</h1> <form action="send_email.php" method="post"> <label for="name">お名前:</label> <input type="text" id="name" name="name" required><br><br> <label for="email">メールアドレス:</label> <input type="email" id="email" name="email" required><br><br> <label for="message">お問い合わせ内容:</label><br> <textarea id="message" name="message" rows="4" cols="50" required></textarea><br><br> <input type="submit" value="送信"> </form> </body> </html> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 以下がPHPのプログラムです。 <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; // 送信先のメールアドレス $to = "***@gmail.com"; // 件名 $subject = "お問い合わせがありました"; // 本文 $body = "お名前: $name\n"; $body .= "メールアドレス: $email\n\n"; $body .= "お問い合わせ内容:\n$message"; // メールを送信 mail($to, $subject, $body); // 送信後のリダイレクト header("Location: thank_you.html"); exit; } ?>

    • 締切済み
    • PHP
  • PHPのお問い合わせフォームが動かない

    「ぶっとびねっと」というレンタルサーバーに以下の2つのファイルをアップしました。 ・contacts.html ・contacts.php しかしフォームに入力後、送信を押してもメールが指定したアドレスに届きません。 なぜでしょうか。。。 ソースを下に貼りますので、ご教授願います。 -----  contacts.html  -------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>メールフォーム</title> </head> <body> <form method="post" action="contacts.php"> お名前:<input type="text" name="namae" /><br /> メールアドレス:<input type="text" name="meado" /><br /> 件名:<input type="text" name="subject" /><br /> お問い合わせ内容:<textarea name="content" cols="50" rows="5"></textarea><br /> <input type="submit" name="submit" value="メール送信" /> </form> </body> </html> ------------------------------------------------------ -----  contacts.php  -------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"    /> <title>メールフォーム</title> </head> <body> <?php if ($_POST["submit"] == "メール送信") { mb_language("Ja") ; mb_internal_encoding("UTF-8") ; $mailto="○○○○@hotmail.co.jp"; $subject = $_POST["subject"]; $content = $_POST["content"]; $namae = $_POST["namae"]; $meado = $_POST["meado"]; $mailfrom="From:" .mb_encode_mimeheader($namae) ."<".$meado.">"; mb_send_mail($mailto,$subject,$content,$mailfrom); } ?> <form method="post" action=""> お名前:<input type="text" name="namae" /><br /> メールアドレス:<input type="text" name="meado" /><br /> 件名:<input type="text" name="subject" /><br /> お問い合わせ内容:<textarea name="content" cols="50" rows="5"></textarea><br /> <input type="submit" name="submit" value="メール送信" /> </form> </body> </html> ------------------------------------------------------

    • ベストアンサー
    • PHP
  • メール送信のPHPの件で

    現在、 <?php //HTML内容出力 echo "<html>"; echo "<head>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; //文字コード設定 mb_language("ja"); mb_internal_encoding("utf-8"); //*環境設定************************************* //件名 $subject = "お問い合わせがありました"; //管理人メールアドレス(宛先) $to = "○○@gmail.com"; //********************************************** //**POSTデータ受け取り************************** //差出人メールアドレス格納 $header = "From: ". $_POST['email']; //本文格納 $body = "■お名前:" . $_POST['name'] ."\n"; $body .= "■内容:" . $_POST['message'] ."\n"; //************************************************ if(mb_send_mail($to,$subject,$body,$header)){ echo "メール送信しました。"; }else{ echo "メール送信失敗しました。"; } //HTML内容出力 echo "</body>"; echo "</html>"; ?> こういう感じでメール送信フォームのPHPを正常稼働させているのですが、 これに送信者への確認メールを送信するには、どのように追記すればよろしいでしょうか? よろしくご教授の方、お願いいたします。

    • 締切済み
    • PHP
  • フォームから同じドメイン宛てのメールが届かない

    はじめまして。 サイトにPHPでお問い合わせフォームを設置したのですが、 メール送信先を同じドメインのアドレスに設定したところ、メールが受信されません。 違うドメインの場合はは受信されます。 たとえば、 http://www.abc.com/にフォームをアップしています。 メールの送信先をinfo@abc.comにすると、メールが届きません。 サーバーの設定などに原因があるのでしょうか。 それともフォームのプログラムに原因があるのでしょうか。 プログラムはこんな感じです。 <?php mb_language("Ja") ; mb_internal_encoding("SJIS") ; $mailto="info@abc.com"; $subject="お問い合わせフォームより"; $message .= "お問い合わせフォームよりメッセージが届きました。\n\n"; $message .= "【お名前】"."\n"; $message .= $_POST['name']."\n\n"; $message .= "【メールアドレス】"."\n"; $message .= $_POST['mailaddress']."\n\n"; $message .= "【タイトル】"."\n"; $message .= $_POST['title']."\n\n"; $message .= "【本文】"."\n"; $message .= $_POST['message']."\n\n"; $mailfrom="From:" .mb_encode_mimeheader($_POST['name']) ."<".$_POST['mailaddress'].">"; mb_send_mail($mailto,$subject,$message,$mailfrom); ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのmail関数で送信者を設定できません

    // 表題 $subject = $_POST['news_title']; // 本文 $message = ' <html> <head> <title>'.$_POST['news_title'].'</title> </head> <body> '.$_POST['textarea_id'].' </body> </html> '; // HTML メールを送信するには Content-type ヘッダが必須 $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; // 追加のヘッダ $headers .= 'To: '.$user_name.'<'.$email.'>'. "\r\n"; //$headers .= $_POST['news_title'] . "\r\n"; $headers .= 'From: 姓名 <myname@mymail.com>' . "\r\n"; // 送信する if(mail($to, $subject, $message, $headers)){$mes .= $email.'にメールを送信しました。 ';}else{$mes .= $email.'にメールを送信する際にエラーが発生しました。 ';} (後略) のようなコードになっていますが。$headersでFrom:を設定したのに、受信するメールには、送信者として、なになに@box450.bluehost.comが表示されます。どうやって正しく送信者を設定できるのでしょうか 因みにapacheのhttpd.confやPHPのphp.iniを変更できません。 わかる方がいらっしゃいましたら、ご回答をよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP初心者の質問

    PHP初心者です。 練習の為、参考にしたHPに記載されてある以下のプログラムを 理解しようと頑張ったんですが、どうしても手に負えない状態 になりました。 症状は、フォームに入力された欄は認識され、 「//入力エラーチェック」には該当しないように成っているの ですが、全部の欄を埋めたとしても「//エラーメッセージ設定」 の部分のイメージが消えず表示されつづけます。 それと、それに繋がりがあるかもしれませんが、何故か最初から 「//入力エラーチェック」と「//エラーメッセージ設定」に該当 されてしまっているようで、表示されたままスタートしています。 これらの原因を考えに考えた結果、恐らく・・・・(1)の部分にある {が閉じられていないのだと思います。 結局のところ試行錯誤で、いろいろ試したのですがそれでも 完成には至りませんでした。 どなたか間違っている部分を教えていただけませんでしょうか? ---------------------------------------------------------------- <?php //設定 $adminMail = "○○○○○○@yahoo.co.jp"; //データの受取 foreach($_REQUEST as $key => $value) { $value = mb_convert_kana($value,"rKV"); $FORM[$key] = $value; } //フォームから送信された場合 if($FROM["mode"] == "send") { ・・・・(1) 最下に記載したテスト                      サイトには{を消して //入力エラーチェック           アップロードしていま $flgErr = true;             す。 $tagErr = ""; if($FORM["name"] == "") { $flgErr = false; $tagErr .= "<li>氏名(漢字)をご記入ください</li>\n"; } if($FORM["kananame"] == "") { $flgErr = false; $tagErr .= "<li>氏名(カタカナ)をご記入ください</li>\n"; } if($FORM["mail"] == "") { $flgErr = false; $tagErr .= "<li>メールアドレスをご記入ください</li>\n"; } if($FORM["mail_re"] == "") { $flgErr = false; $tagErr .= "<li>メールアドレス(確認用)をご記入ください</li>\n"; } if($FORM["subject"] == "") { $flgErr = false; $tagErr .= "<li>件名をご記入ください</li>\n"; } if($FORM["content"] == "") { $flgErr = false; $tagErr .= "<li>お問い合わせ内容をご記入ください</li>\n"; } //入力エラーがあれば if(!$figErr) { //エラーメッセージ設定 $tagErr = '<P><img src="enterErr.gif" /></p><ul>'.$tagErr.'</ul>'; //入力エラーがなければ } else { //管理者にメール送信 mb_language('Japanese'); $subject = "お問い合わせがありました。"; $message = "お問い合わせ内容。\n\n"; $message .= "お名前 :".$FORM["name"]."\n"; $message .= "お名前(カナ文字) :".$FORM["kananame"]."\n"; $message .= "メールアドレス :".$FORM["mail"]."\n"; $message .= "メールアドレス(確認) :".$FORM["mail_re"]."\n"; $message .= "件名\n".$FORM["subject"]."\n"; $message .= "お問い合わせ内容\n".$FORM["content"]."\n"; mb_send_mail($adminMail,$subject,$message,"From:".$adminMail); //完了ページへ移動 header("Locatione:○○○○○○○○"); } ?> ---------------------------------------------------------------- 参考にしているHP↓ http://php.frogstone.jp/inquiry/interface.html よろしくお願いします!!

    • 締切済み
    • PHP
  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP