質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

受付中

PHP お問い合わせフォーム メールが届かない

mgrates
mgrates

総合スコア17

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2回答

0評価

0クリップ

329閲覧

投稿2022/01/25 09:16

編集2022/02/01 10:39

前提・実現したいこと

PHPでお問い合わせフォームを作成し、
入力画面(pf.php)→確認画面(confirm.php)→送信完了画面(done.php)の順で送信完了画面を表示するところまでできました。

肝心な自分のメールアドレスに、入力された情報の内容が記載されたメッセージを送ることができず、自分のメールアドレスにメールが届きません。

どこに問題があるか、教えていただけますでしょうか?

ちなみに設定しているメールアドレスはGmailです。
調べたところmail()関数への変更が必要だということだったので、mail()関数にしています。

該当のソースコード

pf.php

<?php session_start(); //クリックジャッキングへの対策 header('X-Frame-Options: DENY'); //トークンの生成 $token = sha1(uniqid(rand(), true)); //トークンを$_SESSIONに格納し、それをキーとする $_SESSION['key'] = $token; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.3/css/uikit.min.css" /> <!-- UIkit JS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.3/js/uikit.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.3/js/uikit-icons.min.js"></script> <title>ポートフォリオ</title> <link rel="stylesheet" href="pf.css"> </head> <body> <header> <div class="header-top"> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Skills</a></li> <li><a href="#">Works</a></li> <li><a href="#">Contact</a></li> </ul> </div> <div class="header-image">ヘッダーイメージ</div> </header> <!-- メインコンテンツ --> <main> <div class="about"> <div class="explain">佐伯恵<br>1996年生まれ。熊本県出身<br>同志社大学を卒業後不動産会社へ入社。</div> <div class="explain-image"><img class="logo" src="img/pf.jpg"></div> </div> <div class="skills"> <ul> <li class="border-radius">HTML/CSS</li> <li class="border-radius">JavaScript</li> <li class="border-radius">Python</li> <li class="border-radius">WordPress</li> <li class="border-radius">PHP</li> </ul> </div> <div class="works"> <div>政策実績</div> <div class="uk-child-width-1-3@s uk-grid-match" uk-grid> <div> <div class="uk-card uk-card-hover uk-card-body"> <img class="logo" src="img/pf.jpg"> <h3 class="uk-card-title">Hover</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div> <div class="uk-card uk-card-hover uk-card-body"> <img class="logo" src="img/pf.jpg"> <h3 class="uk-card-title">Hover</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div> <div class="uk-card uk-card-hover uk-card-body"> <img class="logo" src="img/pf.jpg"> <h3 class="uk-card-title">Hover</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div> <div class="uk-card uk-card-hover uk-card-body"> <img class="logo" src="img/pf.jpg"> <h3 class="uk-card-title">Hover</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div> <div class="uk-card uk-card-hover uk-card-body"> <img class="logo" src="img/pf.jpg"> <h3 class="uk-card-title">Hover</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div> <div class="uk-card uk-card-hover uk-card-body"> <img class="logo" src="img/pf.jpg"> <h3 class="uk-card-title">Hover</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> </div> <ul> </ul> </div> <div class="contact"> <div class="Form"> <form action="confirm.php" method="post"> <h2>お問い合わせフォーム</h2> <div class="Form-Item input-area"> <p class="Form-Item-Label"> <span class="Form-Item-Label-Required">必須</span>氏名 </p> <input type="name" name="name" class="Form-Item-Input" required> </div> <div class="Form-Item input-area"> <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>メールアドレス</p> <input type="email" name="email" class="Form-Item-Input" placeholder="例)example@gmail.com" required> </div> <div class="Form-Item input-area"> <p class="Form-Item-Label isMsg"> <span class="Form-Item-Label-Required">必須</span>お問い合わせ内容</p> <textarea class="Form-Item-Textarea" name="contact_body" rows="5" required></textarea> </div> <div class="input-area"> <input type="hidden" name="token" value="<?= $token ?>"> <input type="submit" name="submit" value="確認画面へ" class="btn-border"> </div> </form> </div> </div> </main> <!-- フッター --> <footer> <div>フッター</div> </footer> </body> </html>

confirm.php

<?php session_start(); //クリックジャッキングへの対策 header('X-Frame-Options: DENY'); //フォームを経ずにこのページに直接アクセスした場合は拒否する if(!isset($_POST['token'])) { echo '不正なアクセスの可能性があります'; exit; } //フォームに入力された値のエスケープ処理 function e($str) { return htmlspecialchars($str, ENT_QUOTES|ENT_HTML5, 'UTF-8'); } //入力内容を$_SESSIONに格納する $_SESSION['name'] = e($_POST['name']); $_SESSION['email'] = e($_POST['email']); $_SESSION['contact_body'] = e($_POST['contact_body']); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <h2>問合せ内容</h2> <form action="done.php" method="post"> <table border="1"> <tr> <td>名前</td> <td type="name" name="name"><?php echo $_POST['name'];?></td> </tr> <tr> <td>メールアドレス</td> <td type="email" name="email"><?php echo $_POST["email"]; ?></td> </tr> <tr> <td>問い合わせ内容</td> <td type="contact_body" name="contact_body"><?php echo $_POST["contact_body"]; ?></td> </tr> </table> <input type="hidden" name="token" value="<?= $_POST['token'] ?>"> <input type="submit" name="submit" value="送信" /> </form> </body> </html>

done.php

<?php session_start(); //クリックジャッキングへの対策 header('X-Frame-Options: DENY'); //フォームを経ずにこのページに直接アクセスした場合は拒否する if(!isset($_POST['token'])) { echo '不正なアクセスの可能性があります'; exit; } //キーとトークンが一致したら管理者に入力内容がメールで送られる if($_SESSION['key'] === $_POST['token']) { $name = $_SESSION['name']; $email = $_SESSION['email']; $contact_body = $_SESSION['contact_body']; //メールの送り先 $to = '自分のメールアドレス'; //メールの件名 $subject = $name . 'さんからの入力フォームでの送信です'; //メール本文 $contact_body = '名前:' . $name . "\r\n\r\n" . 'メールアドレス:' . $email . "\r\n\r\n" . '内容:' . $contact_body; //メールヘッダー $header = 'From: ' . mb_encode_mimeheader($name). ' <' . $email. '>'; //文字化け対策 mb_language('ja'); mb_internal_encoding('UTF-8'); if(mail($to, $subject, $contact_body, $header)) { //メールが送信出来たら$_SESSIONの値をクリア $_SESSION = array(); //メールが送信出来たらセッションを破棄 session_destroy(); $message = '送信しました'; } else { $message = '送信に失敗しました'; } } else { $message = 'キーとトークンが一致しません'; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>メール送信完了|メール送信フォーム</title> </head> <body> <h2>メール送信完了</h2> <p class="message"> お問い合わせありがとうございます。1営業日以内にご返信させていただきます。<br> 自動返信メールをお送りしておりますのでご確認ください。<br> 1時間たっても届かない場合はお手数ですがこちらからご連絡ください。 </p> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。