2013-07-02 3 views
2

Вот мой код для электронной почты. Он работает хорошо, он отправляется на мой адрес электронной почты. Но как я могу это сделать, чтобы ответить на письмо, которое я получил от формы? Могли бы вы редактировать мой код и вставлять его, потому что я БОЛЬШОЙ php noobie. большое спасибо!Ответ отправителю - PHP email

<?php 

$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 
$to = "[email protected]"; 

mail ($to, $subject, $message, "From: " . $name); 

header('Location: contact_thankyou.html'); 

?> 
+0

Этот код чувствителен к инъекциям заголовка SMTP, поскольку поле POST 'name' не продезинфицировать. –

ответ

15

вам необходимо установить headers, чтобы иметь возможность пройти sender email:

Fx:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

так что ваш код будет выглядеть примерно так:

$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 
$to = "[email protected]"; 
$headers = 'From: '.$email."\r\n" . 
     'Reply-To: '.$email."\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers, "From: " . $name); 

header('Location: contact_thankyou.html'); 

Примечание : Я никогда не тестировал себя, я обычно использую класс smtp.mail, чтобы сделать все это для меня, так как он более легкий, чистый ... just check it out...

, то это будет выглядеть примерно так:

<?php 
require 'class.phpmailer.php'; 

$mail = new PHPMailer; 

$mail->IsSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 

$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->AddAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->AddAddress('[email protected]');    // Name is optional 
$mail->AddReplyTo('[email protected]', 'Information'); 
$mail->AddCC('[email protected]'); 
$mail->AddBCC('[email protected]'); 

$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->Send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
    exit; 
} 

echo 'Message has been sent'; 
+0

хорошо, я попробовал ваш код. но теперь моя электронная почта не будет отправлять вообще. поэтому не уверен, что там происходит. Я бы предпочел не использовать PHPmainer для этого, но приветствует ссылку –

+0

Как и в, я не получаю по электронной почте все вместе. –

+0

мой плохой я забыл '.' – jycr753

Смежные вопросы