0

Here is my code for a email form. It works very great - sends everything to my adress e-mail. There is one problem and my question. How I can make it I can reply to the e-mail received from the form? I mean, user type his e-mail adres in e-mial box so I would like to simple reply it, so sender should be as author e-mail. For now it's myname@mydomain-where-i-have-my-website.com. It should be take this form 'email'. I'm a BIG php noobie.

HTML code

<h2>Contact form</h2>
                        <div id="send_form_status"></div>
                            <form method="post" action="/kontakt.php" id="contact_form">

                                <div><label for="name">Subject</label></div>
                                <div><input type="text" name="name" id="name"  required> </div>

                                <div><label for="email">E-mail</label></div>
                                <div><input type="email" name="email"  required></div>

                                <div><label for="message">Message</label></div>
                                <div><textarea name="message" id="message"  required></textarea></div>

                                <div><input type="submit" id="submint" name="submint" value="Send"></div>

                            </form>

PHP code

<?php
header("content-type: application/json; charset=utf-8");

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$to = "myname@something.pl";
$subject = "Welcome";

if($name && $email && $message){
 $headers = "MIME-Version: 1.0\r\nContent-type: text/plain; charset=utf-8\r\nContent-Transfer-Encoding: 8bit";

 $message_body = "";
 $message_body .= "Subject: " . $name . "\n";
 $message_body .= "From: " . $email . "\n";
 $message_body .= "Message: \n" . $message . "\n";

 if(mail($to,$subject,$message_body,$headers)){
 $json=array("status"=>1,"msg"=>"<p class='status_ok'>Message send.</p>");
 }
 else{
 $json=array("status"=>0,"msg"=>"<p class='status_err'>Faild to send.</p>"); 
 }
}
else{
 $json=array("status"=>0,"msg"=>"<p class='status_err'>The all fields are required.</p>"); 
}
echo json_encode($json);
exit;
?>


UPDATED
As I wrote in my comment. To fix I removed the all $message_body:

 $message_body = "";
 $message_body .= "Subject: " . $name . "\n";
 $message_body .= "From: " . $email . "\n";
 $message_body .= "Message: \n" . $message . "\n";

Added mail header and form content:

  $mailheader = "MIME-Version: 1.0\r\n";
  $mailheader = "Content-type: text/plain; charset=utf-8\r\n";
  $mailheader = "From: ".$email." \n\r";
  $formcontent="Subject: $name \n Message: \n $message \n" ;

And changed this:

if(mail($to,$subject,$message_body,$headers))

To this:

if(mail($to,$subject,$formcontent,$mailheader))
Lucas
  • 39
  • 1
  • 10
  • You need to add it to your headers as you pretty much did in your `$message_body`. Something like this: `$headers .= "From: ".$email." \n\r";` – Nytrix Jan 28 '17 at 02:28
  • 1
    adding to @Nytrix 's comment you can also add the `Reply-To` header the same way. – Jeff Jan 28 '17 at 02:35
  • Maybe I don't understand or I wrote it wrong. I did apply change from @Nytrix 's $message_body .= "From: ".$email." \n\r";. I recive e-mail with text message: Subject: XX, From: e-mail form, Message: XX. But sender e-mail is e-mail from my domain - myname@mydomain-where-i-have-my-website.com .I would to have e-mail adres from form eg. email-type-in-form@something.pl and then just click reply button. Is it possible? – Lucas Jan 28 '17 at 02:57
  • All right my bad. I just remove my mesage_body and add $mailheader = "From: ".$email." \n\r"; with $formcontent="Subject: $name \n Message: \n $message \n" ; and if(mail($to,$subject,$formcontent,$mailheader)). It's working as I want to – Lucas Jan 28 '17 at 03:29

0 Answers0