• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メール送信について(初心者です))

メール送信について(初心者です)

このQ&Aのポイント
  • form1.phpで入力画面、form2.phpで確認画面、send.phpでメール送信を行う方法について教えてください。
  • また、include('send.php');があると画面に何も表示されず、メールも送信されない問題が発生しています。
  • 正しい手順や間違いを指摘していただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

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()を使うべきだと思います。

smilekoko
質問者

補足

回答ありがとうございます。 説明不足でした。申し訳ありません。 form3.phpには、 <? include('send.php'); ?> の下にhtmlの記述があります。 送信完了した場合の記述です。 一番望ましい記述はどのようなものか、 教えていただけると幸いです。 本当に初歩的な質問で申し訳ありません。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>一番望ましい記述はどのようなものか、 >教えていただけると幸いです。 そもそも(おそらく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で受け取れないので・・)。

smilekoko
質問者

お礼

書いていただいたものは記述済みでした。 が、form2.phpでのPOST項目をhiddenで埋め込んだ名前と、 form3.phpで呼んだ変数の名前が違っているという、 初歩的なミスでした。 丁寧に回答頂き誠にありがとうございました。

関連するQ&A