Jump to content

Recommended Posts

Hi, I am trying to set up a contact form and at the moment, the email is "coming from" the server when sent so hitting reply in an email program sends the mail back to the server.

 

I need it to return back to the persons mail who filled out the form.

 

I know that I would need something like $from = ...................  but not sure how to actually write this.

 

The code is:

 

<?php

$to = "[email protected]"; // Replace with your email address
$subject = "Message from ".ucwords($_POST['name']); // Enter the subject here.



//Validating email addres
$email = $_POST['email'];

function validateEmail($email)
{
   if(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$', $email))
  return true;
   else
  return false;
}


//Validates the required fields
if((strlen($_POST['name']) < 1 ) || (strlen($email) < 1 ) || (strlen($_POST['message']) < 1 ) || validateEmail($email) == FALSE){
$emailerror .= true;


} else {

$emailerror .= false;


//Composing the email
$email_message =
	"Name: " . ucwords($_POST['name']) . "\n" .
	"Email: " . $email . "\n" .
	"Message: " . "\n" . $_POST['message'] . "\n";

//Sending the email
mail($to, $subject, $email_message);
}

?>

<?php 

if($emailerror == true) {
echo '<span>Please fill all the fields.</span>';
}
else
{
echo "<span>Message has been sent. Thank you!</span>";
}	


?>

Link to comment
https://forums.phpfreaks.com/topic/232159-mail-from-help-please/
Share on other sites

You need to set the 'From' header and pass it in to the mail() function as the 4th "additional headers" parameter:

 

$headers = "From: [email protected]\r\n";

mail(.., .., .., $headers);

 

As you may have noticed the headers are a string and delimited between a CRLF (Carriage return/linefeed - "\r\n"). You can add other headers to the string too, like 'Reply-To':

 

$headers  = "From: [email protected]\r\n";
$headers .= "Reply-To: [email protected]\r\n";

I'm really struggling with this - when clicking reply, it goes to the [email protected] address and not that of the user who has filled the form in?

 

Heres what I have as the code:

 

<?php

$to = "[email protected]"; // Replace with your email address
$subject = "Message from ".ucwords($_POST['name']); // Enter the subject here.
$headers  = "From: [email protected]\r\n";
$headers .= "Reply-To: " . $email . "\n" ;


//Validating email addres
$email = $_POST['email'];

function validateEmail($email)
{
   if(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$', $email))
  return true;
   else
  return false;
}


//Validates the required fields
if((strlen($_POST['name']) < 1 ) || (strlen($email) < 1 ) || (strlen($_POST['message']) < 1 ) || validateEmail($email) == FALSE){
$emailerror .= true;


} else {

$emailerror .= false;


//Composing the email
$email_message =
	"Name: " . ucwords($_POST['name']) . "\n" .
	"Email: " . $email . "\n" .
	"Message: " . "\n" . $_POST['message'] . "\n";

//Sending the email
mail($to, $subject, $email_message, $headers);
}

?>

<?php 

if($emailerror == true) {
echo '<span>Please fill all the fields.</span>';
}
else
{
echo "<span>Message has been sent. Thank you!</span>";
}	


?>

You are producing the $header variable before you have assigning anything to the $email variable that it contains and the Reply-to: header is an empty value.

 

You would want to produce the $header variable after any variables it contains have been assigned a value.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.