Reply to sender - PHP email
Asked Answered
G

1

7

Here is my code for a email form. It works well, it sends to my email. But how can i make it so i can reply to the email that i received from the form? Would you be able to edit my code and put it in because im a BIG php noobie. many thanks!

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

?>
Gathard answered 2/7, 2013 at 6:23 Comment(1)
This code is susceptible to SMTP header injections because the POST field name is not sanitized.Imperceptive
H
33

you need to set the headers to be able to pass the 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);
?>

so your code will look something like this:

$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);

header('Location: contact_thankyou.html');

Note: I never tested myself, I normally use smtp.mail class to do all this for me, since it is more easy, clean... just check it out...

then it will look something like this:

<?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';
Hyperbaric answered 2/7, 2013 at 6:27 Comment(3)
well i tried your code. but now my email wont send at all. so not sure whats going on there. I'd rather not use PHPmainer for this one, but cheers for the linkGathard
As in, i don't receive at email all together.Gathard
This only works for me, if I omit the last argument (, "From: " . $name)Subway

© 2022 - 2024 — McMap. All rights reserved.