- ベストアンサー
メール送信について(初心者です)
- form1.phpで入力画面、form2.phpで確認画面、send.phpでメール送信を行う方法について教えてください。
- また、include('send.php');があると画面に何も表示されず、メールも送信されない問題が発生しています。
- 正しい手順や間違いを指摘していただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
send.phpですが・・画面に表示するものもなければ、メール送信もありませんよね?form3.phpにinclude('send.php');以外の記述がなければ「何も起こらない」のが「書いたとおりの動作」です。 send.phpのfuction send_mail()はデータのセットしかしていませんし、それ以外の部分にもmail()もmb_send_mail()も見当たりません。またブラウザに何か返すような記述もありません。 (蛇足) せっかくphpなのに、何故mb_send_mailを使わないのかと思います。「日本語のメール」として必要な処理は全部おまかせに出来ます。私はRFCを読むタイプの人間ですが、それでも自分で組み立てるよりはphpにまかせます。せっかくいろんな方がデバッグしてくれているのですから。ましてメール関連のRFCを読まないのであれば、mb_send_mail()を使うべきだと思います。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
>一番望ましい記述はどのようなものか、 >教えていただけると幸いです。 そもそも(おそらくPOSTされてくる)$mail、$name、$inqはどこで変数にセットしているんでしょう?いまどきRegisterGlobalsがON(例:$_POST['mail']が自動的に$mailにセットされる)サーバはほとんどないと思いますが・・。 とりあえず、スクリプトをEUC-JPで書いている(POSTされてくるデータ=元のHTMLもEUC-JP)として、今時点のform3.phpのhtml部分をthanks.htmlとして保存してから 【form3.php】 <?php mb_language('ja'); mb_internal_encoding('EUC-JP'); $mailto = 'recceipt@example.com'; $registDate = date("Y/m/d H:i:s"); if (magic_quotes_gpc()) { $mail = stripslashes($_POST['mail']); $name = stripslashes($_POST['name']); $inq = stripslashes($_POST['inq']); } else { $mail = $_POST['mail']; $name = $_POST['name']; $inq = $_POST['inq']; } $header = "From: $mail\n"; $header .= "To: $mailto\b" $body = ""; $body .= "----------------------------------------\n"; $body .= "名前 :".$name."\n"; $body .= "メールアドレス:".$mail."\n"; $body .= "内容 :".$inq".\n"; $body .= "送信日時:" . $registDate . "\n"; $body .= "----------------------------------------\n"; $body .= "\n"; mb_send_mail($mailto, $subject, $body ,$header, '-f' . $mailto); readfile('thanks.html'); ?> といった感じにしてみてください。なお関数にするほどでもないのでfunctionは使ってません(汗 ちなみに確認画面(form2.php)でPOST項目はhiddenで埋め込まれてますよね?(でないとform3.phpで受け取れないので・・)。
お礼
書いていただいたものは記述済みでした。 が、form2.phpでのPOST項目をhiddenで埋め込んだ名前と、 form3.phpで呼んだ変数の名前が違っているという、 初歩的なミスでした。 丁寧に回答頂き誠にありがとうございました。
補足
回答ありがとうございます。 説明不足でした。申し訳ありません。 form3.phpには、 <? include('send.php'); ?> の下にhtmlの記述があります。 送信完了した場合の記述です。 一番望ましい記述はどのようなものか、 教えていただけると幸いです。 本当に初歩的な質問で申し訳ありません。