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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

585閲覧

PHPでメールの送信をしたいです。

poketatsu

総合スコア19

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2022/07/17 01:36

編集2022/07/17 05:45

前提

アンケートフォームを作っています。

実現したいこと

画面はできており、メールに送信をしたい

発生している問題・エラーメッセージ

確認完了画面までは遷移するのですが、メールが送信されません。

該当のソースコード

fom.html

1<!-- Form.html --> 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <meta charset="UTF-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 <title>アンケート</title> 9 <!-- <img src="../初めてのHTML2週目/img/アンケート.png" id="icon"> --> 10 <link rel="stylesheet" href="../初めてのHTML2週目/page.css"> 11</head> 12<body> 13 <div class="container"> 14 <h1>アンケート</h1> 15 <img src="../初めてのHTML2週目/img/アンケート.png" id="icon"> 16 <p>アンケートお願い致します。</p> 17 <form action="http://localhost/basic/confirm.php" method="post"> 18 19 20 21 22 23 性別を選択:<input id="male" type="radio" name="seibetsu" value="男性"><label for="male">男性</label> 24 <input id="female" type="radio" name="seibetsu" value="女性"><label for="female">女性</label> 25 26 <p class="name"> 27 名前:<input type="text" class="name" name="name" placeholder="山田 太郎"/> 28 </p> 29 30 <p class="tel"> 31 電話番号:<input type="tel" name="tel" class="tel2" placeholder="091-1234-5678"/> 32 </p> 33 34 郵便番号:<input type="text" class="p-postal-code" name="yuubin" maxlength="8" placeholder="123-4567"><br> 35 都道府県:<input type="text" class="p-region" name="region" placeholder="東京都/埼玉県"/><br> 36 地区町村:<input type="text" class="p-locality" name="locality" placeholder="〇区"/><br> 37 町名番地:<input type="text" class="p-street-address p-extended-address" name="banti" placeholder="〇〇町 1-2-3"/><br> 38 <p class="mail"> 39 メール:<input type="text" class="mail2" name="mail" placeholder="abcde@dejitak.com"/> 40 </p> 41 42 <h2>感想</h2> 43 44 <p id="textarea"> 45 <textarea rows="10" name="textarea" cols="60" placeholder="感想を入力してください"></textarea> 46 </p> 47 48 <input class="submit" type="submit" value="確認"> 49 50 <!-- <p> 51 <label for="mail">メール:</label> 52 <input type="mail" name="mail" id="mail" placeholder="dejital@abcde.com" > 53 </p> --> 54 55 56 57 <!-- <p>・感想 58 <input type="text" name="name"></p> 59 <p>・住所 60 <input type="text" name="address"></p> 61 <p>・電話番号 62 <input type="text" name="address"></p> 63 64 <p>・メールアドレス 65 <input type="text" name="mail"></p> 66 67 <p>・電話番号 68 <input class="tel" type="tel" name="example2" size="15" maxlength="15"></p> 69 <label><input type="radio" name="home" value="1">自宅</label> 70 <label><input type="radio" name="keitai" value="2">携帯</label> --> 71 </p> 72 73 74 75 <!-- <section class="Next&Back"> 76 77 78 <article> 79 <nav class="pagination"> 80 <ul> 81 <li class="button"><a href="form.html">&laquo;前</a></li> 82 <li><a href="form.html">1</a></li> 83 <li><a href="form2.html">2</a></li> 84 85 <li><span class="current">1</span></li> 86 87 88 <li class="button"><a href="form2.html">次&raquo;</a></li> 89 </ul> 90 91 </nav> 92 </article> 93 </section> --> 94</div> 95 96 97 98 </form> 99 <footer> 100 <p>&copy;2022 </p> 101 </footer> 102</body> 103</html>

confirm.php

1<?php 2 $name=$_POST['name']; 3 $seibetsu=$_POST['seibetsu']; 4 $tel=$_POST['tel']; 5 $textarea=$_POST['textarea']; 6 $yuubin=$_POST['yuubin']; 7 $region=$_POST['region']; 8 $locality=$_POST['locality']; 9 $banti=$_POST['banti']; 10 $mail=$_POST['mail']; 11 ?> 12 13<!DOCTYPE HTML> 14<html> 15<head> 16<meta charset='UTF-8'> 17<title>確認ページ</title> 18<form action='http://localhost/basic/complete.php' method='post'> 19<style type="text/css"> 20 21 *{ 22 padding: 0; 23 margin: 0; 24 } 25 .icon2{ 26 /* margin-top:200px; */ 27 width: 200px; 28 29 margin-left: 400px; 30 } 31 32 .kakunin{ 33 text-align:center; 34 35 } 36 37 .hensuu{ 38 border: double 5px; 39 font-size:20px; 40 font-weight:bold; 41 width: 700px; 42 height: 800px; 43 background-color:#f5deb3; 44 /* text-align:center; */ 45 margin:0 auto; 46 47 48 49 } 50 51 .btn{ 52 text-align: center; 53 margin-top:100px; 54 55 } 56 57 58 .sousin{ 59 width:100px; 60 } 61 62 .modoru{ 63 width:100px; 64 } 65 66 .hyouji{ 67 68 margin-top:100px; 69 margin-left:200px; 70 } 71 72 body{ 73 74 } 75 76 footer{ 77 position: fixed; 78 bottom: 0; 79 background-color: darkcyan; 80 width: 100%; 81 text-align: center; 82 color: darkgray; 83 padding: 20px 0; 84 font-size: 30px; 85 86 87 88 89 90 91 92 93} 94 95</style> 96</head> 97<body> 98 99 100 101 102 103 104 105<div class="hensuu"> 106<img src="アンケート.png" class="icon2"> 107<h1 class="kakunin">確認</h1> 108<div class="hyouji" name="toiawase"> 109<span>名前: 110 <?php echo $name; ?> 111</span> 112<br> 113 114<span>性別: 115 <?php echo $seibetsu; ?> 116</span> 117<br> 118 119 120<span>電話番号: 121<?php echo $tel; ?> 122</span> 123<br> 124 125<span>郵便番号: 126<?php echo $yuubin; ?> 127</span> 128<br> 129 130<span>都道府県: 131<?php echo $region; ?> 132</span> 133<br> 134 135<span>地区町村: 136<?php echo $locality; ?> 137</span> 138<br> 139 140<span>町名番地: 141<?php echo $banti; ?> 142</span> 143<br> 144 145<span>メール: 146<?php echo $mail; ?> 147</span> 148<br> 149 150<span>感想: 151<?php echo $textarea; ?> 152</span> 153<br> 154</div> 155<input type='hidden' name='name'> 156 157<div class="btn"> 158<input type='button' class="modoru" onclick='history.back()' value='戻る'> 159<input type='submit' class=sousin value='送信'> 160</div> 161</div> 162 163</br> 164</br> 165<input type='hidden' name='name' value='$name'> 166<input type='hidden' name='seibetshu' value='$seibetshu'> 167<input type='hidden' name='tel' value='$tel'> 168<input type='hidden' name='yuubin' value='$yuubin'> 169<input type='hidden' name='region' value='$region'> 170<input type='hidden' name='locality' value='$locality'> 171<input type='hidden' name='banti' value='$banti'> 172<input type='hidden' name='mail' value='$mail'> 173<input type='hidden' name='textarea' value='$textarea'> 174 175 176</form> 177<footer> 178 <p>&copy;2022 </p> 179 </footer> 180</body> 181</html> 182 183 184

complete.php

1<?php 2 3$name=$_POST['name']; 4$seibetsu=$_POST['seibetsu']; 5$tel=$_POST['tel']; 6$textarea=$_POST['textarea']; 7$yuubin=$_POST['yuubin']; 8$region=$_POST['region']; 9$locality=$_POST['locality']; 10$banti=$_POST['banti']; 11$mail=$_POST['mail']; 12 13 14 15$mailTO = $mail; 16$mailHeader = "送信元メールアドレス"; 17 18$mailSubject = "お問い合わせありがとうございます"; 19$mailBody = $name . "様 お問い合わせありがとうございます"; 20$mailBody .= "以下の内容で送信いたしました。"; 21$mailBody .= "==お問い合わせ内容=="; 22$mailBody .= "氏名" . $name; 23$mailBody .= "/n"; 24$mailBody .= "性別" . $seibetsu; 25$mailBody .= "/n"; 26$mailBody .= "電話番号" . $tel; 27$mailBody .= "/n"; 28$mailBody .= "郵便番号" . $yuubin; 29$mailBody .= "/n"; 30$mailBody .= "都道府県" . $region; 31$mailBody .= "/n"; 32$mailBody .= "地区町村" . $locality; 33$mailBody .= "/n"; 34$mailBody .= "町名番地" . $banti; 35$mailBody .= "/n"; 36$mailBody .= "メール" . $mail; 37$mailBody .= "/n"; 38$mailBody .= "感想" . $textarea; 39$mailBody .= "/n"; 40 41$mailBody .= "ご返信まで~~~~"; 42 43mail($mailTO, $mailSubject, $mailBody, $mailHeader); 44?> 45 46<!DOCTYPE html> 47<html> 48<head> 49<meta charset='UTF-8'> 50<title>送信完了</title> 51</head> 52<body> 53<p>お問い合わせありがとうございます。</p> 54<p>送信完了致しました。</p> 55</body> 56</html> 57 58 59

試したこと

上手くいった方法

index.html

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>phpでフォーム送信</title> 6</head> 7<body> 8<form action="http://localhost/basic/confirm3.php" method="post"> 9 <div id="contents"> 10 <div id="name"> 11 お名前 <input type="text" name="name"> 12 </div> 13 <div id="mail"> 14 メールアドレス <input type="text" name="mail"> 15 </div> 16 <div id="toiawase"> 17 お問い合わせ内容 <textarea name="toiawase"></textarea> 18 </div> 19 </br> 20 </br> 21 <input type="submit" value="確認"> 22 </div> 23</form> 24</body> 25</html> 26 27

confirm3.php

1<?php 2 3 $name = $_POST['name']; 4 $mail = $_POST['mail']; 5 $toiawase = $_POST['toiawase']; 6 ?> 7 8 9<!DOCTYPE html> 10<html> 11<head> 12<meta charset='UTF-8'> 13<title>Insert title here</title> 14</head> 15<body> 16 17<?php echo $name; ?> 18</br> 19<?php echo $mail; ?> 20</br> 21<?php echo $toiawase; ?> 22</br> 23 24 25</br> 26</br> 27<form action='http://localhost/basic/complete2.php' method='post'> 28<input type='hidden' name='name' value='$name'> 29<input type='hidden' name='mail' value='$mail'> 30<input type='hidden' name='toiawase' value='$toiawase'> 31<input type='button' onclick='history.back()' value='戻る''> 32<input type='submit' value='送信'> 33</form> 34</body> 35</html> 36

complete2.php

1<?php 2 3$name = $_POST['name']; 4$mail = $_POST['mail']; 5 6$toiawase = $_POST['toiawase']; 7 8$mailTO = $mail; 9$mailHeader = "送信元メールアドレス"; 10 11$mailSubject = "お問い合わせありがとうございます"; 12$mailBody = $name . "様 お問い合わせありがとうございます"; 13$mailBody .= "/n"; 14$mailBody .= "ご返信まで~~~~"; 15 16mail($mailTO, $mailSubject, $mailBody, $mailHeader); 17 18echo " 19<!DOCTYPE html> 20<html> 21<head> 22<meta charset='UTF-8'> 23<title>Insert title here</title> 24</head> 25<body> 26お問い合わせありがとうございます。 27</body> 28</html> 29"; 30 31

テストで試したものはうまくいったのですが、
実際自分でつくったものに関しては、うまくいかなかったです。

初めてで、まだまだ作りは甘いですが、どうぞ宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usekay

2022/07/17 03:30

PHPのエラー表示をオンにして確認しましたか? おそらく未確認と思われるのでまずそちらを確認しましょう。
poketatsu

2022/07/17 04:03

申し訳ございません! php.iniにて、display_errors = Onにしましたがこちらで合っていますでしょうか? エラーというのはこちらのことでしょうか? https://supporsendmail: Error during delivery: The recipient address <$mail@> is not a valid RFC-5321 address. Learn more at https://suppor
usekay

2022/07/17 04:44

そのえらーならm.ts10806さんの指摘通りですね。 なんかあったらエラーメッセージを見るようにしましょう。
poketatsu

2022/07/17 05:03

m.ts10806さんがおっしゃってた、1つ目の理由はキーのnameが複数定義は分かったのですが、2つ目の理由がわからなかったです。 どういうことなのでしょうか。
guest

回答1

0

ベストアンサー

  • nameという値を持つnameが複数ある(リクエストで参照するキーになるから、配列のキー未定義のnoticeが出るはず。undefined index)
  • value='$textarea' 見たところPHPタグ内で出力書かれてないので変数展開されてないのでは

2つ目の理由で「上手く行った」という方で正しくリクエストに値が含まれてるようには思えません。

投稿2022/07/17 02:36

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poketatsu

2022/07/17 05:01

nameという値を持つnameが複数ある(リクエストで参照するキーになるから、配列のキー未定義のnoticeが出るはず。undefined index)に関しましては、修正致しましたので、ご確認お願いします。 2つ目なのですが、confirm.phpにて、 <span>感想: <?php echo $textarea; ?> </span> echoで出しているのですが、こういう事ではないということでしょうか? すみません。 もう少しかみ砕いて説明してもらうと助かります!
m.ts10806

2022/07/17 05:16

<input type='hidden' name='toiawase' value='$toiawase'> ↑ブラウザのデベロッパツールなどからHTMLソースを確認してみるとわかるかと。入力した文字列ではなく$toiawaseという文字列が出ているはずです。
m.ts10806

2022/07/17 05:17

<?php 内で echo "<input type='hidden' name='toiawase' value='$toiawase'>"; としているならわかります。 しかし、そうではないので、PHPの変数は展開されていないはずです。
m.ts10806

2022/07/17 05:26 編集

>修正致しましたので、ご確認お願いします。 mail が2つあるように見受けられます。 続き。 メールアドレスについても、"$mailという変数が保持している値"が展開された状態ではなく ”$mail”という文字列が送られるのでメール送信がされない(正しいメールアドレスではない) ということになります。 変数展開あたりからしっかりとおさえられたほうが良いと思います。 https://www.php.net/manual/ja/language.types.string.php あと・・・ 演習や課題、入門系の書籍を利用かもしれませんが、 このままだとセキュリティ的に問題がある作りになるような気がします。 https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_8.html https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_5.html スパムメールの発射台になったりなんだり。 不特定の利用者がアクセスする場所にはアップしない方が良いでしょうね。
poketatsu

2022/07/23 23:56

セキュリティはよくないですが、なんとかメール送信は実装できました! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問