Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reply to sender - PHP email

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

?>
like image 977
Adam G Avatar asked Jul 02 '13 06:07

Adam G


People also ask

Does PHP mail need SMTP?

Simple Transmission Protocol (SMTP) ini file. But this will only work for localhost or XAMPP like solutions because as we have already mentioned, PHP mail() function does not support SMTP authentication and doesn't allow sending messages via external servers.

Can you send emails with PHP?

Using the PHP mail() function. PHP's built-in mail() function is one of the simplest ways to send emails directly from the web server itself. It just takes three mandatory parameters: the email address, email subject and message body—and sends it to the recipient.

Does PHP mail function work on localhost?

If the web application is built with PHP, the mail() function is used to send email from the script using PHP. But the PHP mail() function will not work in localhost.


1 Answers

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';
like image 151
Jorge Y. C. Rodriguez Avatar answered Sep 30 '22 19:09

Jorge Y. C. Rodriguez