• 締切済み

問い合わせフォームから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; } ?>

みんなの回答

  • luka3
  • ベストアンサー率72% (424/583)
回答No.3

いったん原因の切り分けを行うために、送信先のメールアドレスをGMail以外で試してみてほしいです。 メールが届かない  ⇒ phpで指定されたメールサーバの設定に問題があります。 メールが届く  ⇒ 昨今、GMailはスパム業者撲滅のためセキュリティ対策が厳しくなりました。   このため、送信元ドメインの設定を適切に行わないとメールが送れなくなっています。   レンタルサーバであれば、ドメインの設定変更は難しいと思われますので、   GMail以外のメールアドレスによる運用の方がいいかもしれません。

hummingandgo
質問者

補足

ご返信ありがとうございます!! サーバーはレンタルサーバーのFC2サーバーLiteを使っていますが、確かに管理画面には設定できるところがありませんでした‥。 はい。Gmail以外で確認してみます!! また確認後にメッセージさせてください☆

  • retorofan
  • ベストアンサー率34% (435/1276)
回答No.2

メールが届かない原因としては、いろいろな場合が考えられます。 次の2点を確認してみてください。 1.スパムフィルターにひっかかっていないか?  特にGmailのようなメールサービスでよく起こることですが、  送信メールが受信者のスパムフィルターに引っかかっている場合があります。 2.サーバーのメール送信設定は大丈夫だろうか?  PHPの mail() 関数は、サーバーのメール送信設定に依存します。  サーバーがメールを送信するための適切な設定を持っていない場合、  メールは送信されません。 なお、あなたのPHPコードですと、メールを送信後にリダイレクトする際に 確実に送信されたと想定したものになっています。 しかし、つねに確実に送信という保障はないでしょう? そこで、確実に送信されたかどうかのエラーハンドリングを追加したら どうでしょうか。 //修正前 // メールを送信 mail($to, $subject, $body); // 送信後のリダイレクト header("Location: thank_you.html"); exit; //修正後 // メールを送信できたら if(mail($to, $subject, $body)){ // 送信後のリダイレクトを実施する header("Location: thank_you.html"); exit; } else{ echo "メールの送信に失敗しました。"; } 以上、参考になれば幸いです。

  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.1

php.iniでSMTPの設定はどうなっていますか。メール送信に使用するメールサーバーを適切に設定する必要があります。 次に、そのメールサーバーのログを調べて失敗の原因を探ることになります。PHPプログラムがメールサーバーに接続する際に認証に失敗しているとか、送ろうとしているメールデータの形式が不適切であるとか。 メールのトラブルシューティングは難しいので、メールサーバーの管理者と相談してください。 それから、日本語のメールを送るつもりであればmail()ではなくmb_send_mail()を使うことをお勧めします。

hummingandgo
質問者

補足

教えてくださり、ありがとうございます。 メールサーバーを一つもチェックしていませんでした。今、FC2サーバーLiteの管理画面を見ているのですが、Php.iniを設定する箇所が見つかりませんでした。もう少し頑張って探してみます。また結果を後ほどメッセージします。

関連するQ&A