2016-03-31 8 views
0

Wenn ein Benutzer ihre E-Mail auf einem Formular auf meiner Website eingibt, erhalte ich eine E-Mail mit ihren Informationen. Ich möchte in der Lage sein, auf diese E-Mail zu antworten und ihre E-Mails in "An:" automatisch ausfüllen zu lassen, aber ich habe Probleme. Ich fand diese Frage und versuchte die Lösung: reply-to address in php contact form, aber es funktioniert nicht für mich, und ich bin mir nicht sicher warum.Antwort auf E-Mail in PHP Fehler

<?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(); 

?> 

Und dies ist die Fehlermeldung summiert Ich erhalte bis:

Hier meine PHP ist

Undefined variable: E-Mail in /contact-form-handler.php auf Linie 9 Warnung: Kann nicht modify header information - headers already sent by (Ausgabe begann bei /contact-form-handler.php:9) in /contact-form-handler.php on line 44

Die pr oblem ist die Variable $email, denn wenn ich ein Reply-To und eine E-Mail angeben, funktioniert es. Ich dachte, vielleicht lag es daran, dass die Variable definiert ist, nachdem ich sie in der Kopfzeile aufgerufen habe, aber es am unteren Rand nicht funktionierte. Ich bin ein Anfänger mit PHP, also bin ich nicht sicher, warum diese Variable nicht funktioniert.

ich auch versucht:

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

Jede Hilfe wäre dankbar!

+1

Fügen Sie es in der unteren wo e? Im Allgemeinen können Sie eine Variable nicht verwenden, bevor Sie ihr einen Wert zuweisen. –

+0

Mögliches Duplikat von [PHP: "Notice: Undefinierte Variable" und "Notice: Undefined Index"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – chris85

+1

Es wurde schon oft gesagt - benutze nicht die interne PHP 'mail' Funktion, da es nur ein Wrapper für MTAs wie sendmail ist, der viele Einschränkungen auferlegt und regelmäßig Probleme verursacht. Verwenden Sie stattdessen SMTP über bewährte Lösungen wie 'PHPMailer' (https://github.com/PHPMailer/PHPMailer) oder' SwiftMailer' (https://github.com/swiftmailer/swiftmailer). – brezanac

Antwort

1

Sie verwenden eine Variable, bevor Sie sie definieren!

Verschieben dieser Block an die Spitze des Skriptes:

$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']; 

wie folgt aus:

<?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

Danke Kevinrob! Ich kann nicht glauben, dass es so einfach war, ich fühle mich ziemlich albern. Aber ich weiß es wirklich zu schätzen, dass du herausgefunden hast, dass das für mich funktioniert hat. – amandathewebdev

0

scheint, wie Sie erhalten keine $_POST['email']; aus der Kontaktform (re: „Nicht definierte Variable: E-Mail ")

Überprüfen Sie den Namen Ihres Mail-Eingabefeldes ...

+0

Das wäre ein undefinierter ** Index ** Hinweis, nicht undefiniert ** Variable **. Diese Zeile '$ headers. = 'Reply-To:'. $ email. "\ r \ n"; 'wirft es, weil es vorher nicht definiert wurde. – chris85