2016-03-31 2 views
0

ユーザーが自分のサイトのフォームに自分のメールアドレスを入力すると、自分の情報が記載されたメールが届きます。そのメールに返信して、「To:」にメールの自動入力をしたいのですが、問題があります。私はこの質問を見つけて解決策を試しました:reply-to address in php contact formしかし、それは私のために働いていない、と私はなぜわからない。まとめPHPでの返信メールのエラー

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$to = '[email protected]'; 
$headers = "BCC: [email protected]\r\n"; 
$headers .= 'Reply-To: ' . $email . "\r\n"; 

$subject = '*** Quote Request'; 

$name = $_POST['name']; 
$phone = $_POST['phone']; 
$date = $_POST['date']; 
$time = $_POST['time']; 
$pickup = $_POST['pickup']; 
$dropoff = $_POST['dropoff']; 
$passengers = $_POST['passengers']; 
$service = $_POST['service']; 
$email = $_POST['email']; 


$message = <<<EMAIL 

Quote submission from: $name 

Name: $name 
Phone Number: $phone 
Date: $date 
Time: $time 
Pickup Location: $pickup 
Drop Off Location: $dropoff 
Total Passengers: $passengers 
Service needed: $service 
Email: $email 

EMAIL; 


if($_POST) { 
    mail($to, $subject, $message, $headers); 
} 
header('Location: thankyou.html'); 
exit(); 

?> 

そして、これは私が取得していますエラーメッセージです、::ここで

は私のPHPで

未定義の変数:/contact-form-handler.php上で電子メールを行9警告:ヘッダー情報を変更することはできません - すでに送信されたヘッダー(/contact-form-handler.php:9からの出力)は/contact-form-handler.phpの44行目で変更できません。

oblemは変数$emailです。私がReply-Toを置いて電子メールを指定すると動作します。ヘッダー内で変数を定義した後に変数が定義されている可能性がありますが、その変数を下部に追加すると機能しない可能性があります。私はPHPを使った新人だから、なぜこの変数がうまくいかないのか分かりません。

私も試してみました:

$headers = "BCC: [email protected]\r\n" . 
'Reply-To: ' . $email . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

任意の助けをいただければ幸いです!

+1

e?通常、変数を使用する前に変数を使用することはできません。 –

+0

[PHP: "Notice:未定義変数"と "Notice:未定義インデックス"](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index)の可能な複製 – chris85

+1

これまでに何度も言われてきたことですが、内部的なPHPの 'mail'関数を使用しないでください。なぜなら、多くの制限を課し定期的に問題を引き起こすsendmailのようなMTAのラッパーだけです。代わりに 'PHPMailer'(https://github.com/PHPMailer/PHPMailer)や' SwiftMailer'(https://github.com/swiftmailer/swiftmailer)のような実証済みのソリューションを通してSMTPを使用してください。 – brezanac

答えて

1

変数を定義する前に使用します。

移動は、スクリプトの先頭にこのブロック:そのような

$name = $_POST['name']; 
$phone = $_POST['phone']; 
$date = $_POST['date']; 
$time = $_POST['time']; 
$pickup = $_POST['pickup']; 
$dropoff = $_POST['dropoff']; 
$passengers = $_POST['passengers']; 
$service = $_POST['service']; 
$email = $_POST['email']; 

:「未定義の変数:

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$name = $_POST['name']; 
$phone = $_POST['phone']; 
$date = $_POST['date']; 
$time = $_POST['time']; 
$pickup = $_POST['pickup']; 
$dropoff = $_POST['dropoff']; 
$passengers = $_POST['passengers']; 
$service = $_POST['service']; 
$email = $_POST['email']; 

$to = '[email protected]'; 
$headers = "BCC: [email protected]\r\n"; 
$headers .= 'Reply-To: ' . $email . "\r\n"; 

$subject = '*** Quote Request'; 


$message = <<<EMAIL 

Quote submission from: $name 

Name: $name 
Phone Number: $phone 
Date: $date 
Time: $time 
Pickup Location: $pickup 
Drop Off Location: $dropoff 
Total Passengers: $passengers 
Service needed: $service 
Email: $email 

EMAIL; 


if($_POST) { 
    mail($to, $subject, $message, $headers); 
} 
header('Location: thankyou.html'); 
exit(); 

?> 
+0

ありがとうKevinrob!私はそれが簡単だとは信じられない、私はかなりばかげていると感じる。しかし、私は本当にあなたがそれを理解してくれてありがとう、それは私のために働いた。 – amandathewebdev

0

は、あなたのコンタクトフォームから(再$_POST['email'];を受けていない、あなたのように思えます。メール ")

メール入力フィールドの名前を確認してください...

+0

これは未定義**インデックス**通知であり、未定義**変数**ではありません。この行は '$ headers。= 'Reply-To:'です。 $ email。 "\ r \ n"; "以前に定義されていないためにスローします。 – chris85

関連する問題