20

I'm not even sure this is possible, however what I'm trying to do is as follows. I have an HTML form that generates and email using a PHP script. What I want is to recieve emails from this form to abc@xyz.com, then I want the from address to appear as one of the fields in the form.

I have had a look around and found some useful information on this site. I'm not sure whether sendmail_from can be used in this situation, or if it does what I'm asking.

Is this possible, if so how?

3 Answers3

35

See this page on the same site (example 2): http://www.w3schools.com/php/func_mail_mail.asp

You will have to set the headers of the message to include the From and other stuff like CC or BCC:

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com\r\n";

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

Note that you have to separate the headers with a newline sequence "\r\n".

Ricardo Souza
  • 16,030
  • 6
  • 37
  • 69
  • 2
    Just a note if it is a dynamic field from a form just replace webmaster@example.com with a `$variable` also you can use this format also `$username<$email>`. – Pitchinnate May 24 '12 at 16:26
  • I'd of included the official manual on PHP's `mail()` http://php.net/manual/en/function.mail.php also/instead. – Funk Forty Niner Oct 21 '16 at 12:56
4

For a php mail script I have used this for contact forms:

$from = $_POST["from"];  //posted from the form.

mail("me@myname.com", $subject, $message, "From:" . $from);

I have not used a sendmail_from in my php before, only a simple variable.

I hope this helps!

SteveLacy
  • 4,150
  • 2
  • 23
  • 30
  • 1
    You really should sanitize that $_POST["from"] variable before pass it to the mail() function. A malicious user could inject any number of other headers using your method. – Eric Seastrand Jan 05 '17 at 13:40
  • Furthermore it will most likely end up in the spam folder on most mail servers systems since `From` does not match the sending domain. I would leave `From` set to a local email on the server and instead set a sanitized `Reply-To` header. – Mavelo Oct 04 '18 at 15:43
1

Any reason you cant do it in the email headers?

$to      = 'hello@hello.com';
$subject = 'my subject';
$message = 'hello';
$headers = 'From: '.$email_from_form. "\r\n";

mail($to, $subject, $message, $headers);
DickieBoy
  • 4,886
  • 1
  • 28
  • 47