PHP formulaire de courrier - email-tête
Je suis à l'aide d'un mail de PHP formulaire sur mon site. Je reçois le courrier seulement beaux, mais les en-têtes que je suis se présentent sous la forme [email protected]
, et de même pour l'adresse de réponse. Comment puis-je modifier mon code pour obtenir le nom de la personne dans l'en-tête? Je suis en utilisant le code suivant:
<?php
if(isset($_POST['submit'])) {
$to = '[email protected]' ; //put your email address on which you want to receive the information
$subject = 'Message - Contact Form Coast Med Spa'; //set the subject of email.
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$mailheader = "From: ".$_POST["FirstName"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$message = "<table>
<tr><td>Title</td><td>".$_POST['Title']."</td></tr>
<tr><td>First Name</td><td>".$_POST['FirstName']."</td></tr>
<tr><td>Last Name</td><td>".$_POST['LastName']."</td></tr>
<tr><td>E-Mail</td><td>".$_POST['Email']."</td></tr>
<tr><td>Phone Number</td><td>".$_POST['HomePhone']."</td></tr>
<tr><td>Comments</td><td>".$_POST['CAT_Custom_869']."</td></tr>
<tr><td>Contact Method</td><td>".$_POST['CAT_Custom_868']."</td></tr>
<tr><td>Subscribe to: eNewsletter</td> <td>".$_POST['CampaignList_41798']."</td></tr>
</table>" ;
mail($to, $subject, $message, $headers, $mailheader);
header('Location: http://coastlasercenter.com/html/message-contact.html');
echo "Your message has been received";
}
?>
- Il vaut mieux utiliser un mailer classe comme
PHPmailer
. Construire-dans desmail()
fonction ne rentre pas aujourd'hui les normes de messagerie et il est difficile de modifier de telles choses.
Vous devez vous connecter pour publier un commentaire.
Pourquoi êtes-vous en séparant les en-têtes dans deux variables différentes?
Vous êtes de passage le
From
etReply-to
en-têtes comme des paramètres supplémentaires à lamail()
fonction. Vérifier PHP la documentation.Essayez ceci:
BTW, vous devriez envisager de valider les données que vous obtenez dans $_POST avant la concaténation de à vos e-mails car elle peut conduire à e-mail attaques par injection.
$headers .= "From: ".$_POST["FirstName"]." <".$_POST['Email'].">";
. Je suis en train de modifier ma réponse pour ajouter à cela, parce qu'il ne serait probablement pas fonctionner correctement sans l'adresse e-mail sur cet en-tête.Utiliser quelque chose comme ce format dans votre code:
Par la façon dont il est préférable d'utiliser utf-8 au lieu de iso-8859-1 pour votre jeu de caractères.
$_POST["FirstName"]
et $userEmailAddress doit être$_POST["email"]
$headers .= "From: ".$_POST['FirstName']." ".$_POST['LastName']." <".$_POST['Email'].">";