Dirección de respuesta en el formulario de contacto de php

Compré una plantilla de sitio web simple con un formulario de contacto de php. Todo funciona muy bien con la única excepción de recibir los mensajes enviados a través del formulario. Es decir, el formulario de contacto mostraría un mensaje de éxito, pero el mensaje nunca llegaría.

Después de un largo viaje de ida y vuelta con mi servicio de alojamiento, descubrí que, para evitar la falsificación, no permiten que se envíen correos electrónicos a la dirección FROM que no alojan. Es decir, si un visitante del sitio escribe su gmail / yahoo, etc. en el formulario, no lo obtendré.

Ellos sugirieron usar la dirección de correo electrónico alojada con ellos como la dirección de DESDE, y tener el correo electrónico de entrada del visitante como la dirección de RESPUESTA. Esto parece razonable.

Así que cavé alrededor (por ejemplo aquí:Error de respuesta de PHP: viene con el correo electrónico del administrador y no el remitente del formulario de contacto yFormulario de contacto de php en el sitio web y correo electrónico de respuesta )

y las respuestas sugieren algo que agrega un componente de encabezados:

$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

y también agregarlo a

mail($to, $subject, $message, $headers);

así que eso es lo que hice. $ email se define en esta plantilla como el correo electrónico del visitante, así que lo que hice fue:

$subject = "Contact Form: $name";
$message = "$message";
$headers = 'From: myemail@my_domain.com' . "\r\n" .
    'Reply-To: $email' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

Todo esto es agradable y elegante, pero todavía no funciona bien. Correos electronicoshacer Pasa por ahora, pero los detalles son:

from:    myemail@my_domain.com via servername.hosting_company.com 
**reply-to:  [email protected]_company.com**
to:  myemail@my_domain.com

Por lo tanto, la respuesta a la dirección todavía no es lo que dejó el visitante.

¿Me puede ayudar con esto? No sé qué más puedo hacer.

¡Muchas gracias!

Si alguien está interesado, aquí está el archivo php completo:

<?php

// Clean up the input values
foreach($_POST as $key => $value) {
    if(ini_get('magic_quotes_gpc'))
        $_POST[$key] = stripslashes($_POST[$key]);

    $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
}

// Assign the input values to variables for easy reference
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

// Test input values for errors
$errors = array();
if(strlen($name) < 2) {
    if(!$name) {
        $errors[] = "You must enter a name.";
    } else {
        $errors[] = "Name must be at least 2 characters.";
    }
}
if(!$email) {
    $errors[] = "You must enter an email.";
} else if(!validEmail($email)) {
    $errors[] = "You must enter a valid email.";
}
if(strlen($message) < 10) {
    if(!$message) {
        $errors[] = "You must enter a message.";
    } else {
        $errors[] = "Message must be at least 10 characters.";
    }
}

if($errors) {
    // Output errors and die with a failure message
    $errortext = "";
    foreach($errors as $error) {
        $errortext .= "<li>".$error."</li>";
    }
    die("<span class='failure'><h3>Sorry, The following errors occured:</h3><ol>". $errortext ."</ol><a href='contact.html' class='more'>Refresh Form</a></span>");
}


// --------------------------------------//
// Send the email // INSERT YOUR EMAIL HERE
$to = "myemail@my_domain.com";
// --------------------------------------//


$subject = "Contact Form: $name";
$message = "$message";
$headers = 'From: myemail@my_domain.com' . "\r\n" .
    'Reply-To: $email' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();


mail($to, $subject, $message, $headers);

// Die with a success message
die("<span class='success'><h3>Successfully Sent!</h3> Your message is on its way, we will respond to you shortly.</span>");

// A function that checks to see if
// an email is valid
function validEmail($email)
{
   $isValid = true;
   $atIndex = strrpos($email, "@");
   if (is_bool($atIndex) && !$atIndex)
   {
      $isValid = false;
   }
   else
   {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen < 1 || $localLen > 64)
      {
         // local part length exceeded
         $isValid = false;
      }
      else if ($domainLen < 1 || $domainLen > 255)
      {
         // domain part length exceeded
         $isValid = false;
      }
      else if ($local[0] == '.' || $local[$localLen-1] == '.')
      {
         // local part starts or ends with '.'
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $local))
      {
         // local part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
      {
         // character not valid in domain part
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $domain))
      {
         // domain part has two consecutive dots
         $isValid = false;
      }
      else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
                 str_replace("\\\\","",$local)))
      {
         // character not valid in local part unless 
         // local part is quoted
         if (!preg_match('/^"(\\\\"|[^"])+"$/',
             str_replace("\\\\","",$local)))
         {
            $isValid = false;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
      {
         // domain not found in DNS
         $isValid = false;
      }
   }
   return $isValid;
}

?>

Respuestas a la pregunta(2)

Su respuesta a la pregunta