PHP邮件表单-电子邮件头


PHP mail form - email header

我在我的网站上使用PHP邮件表单。我收到的邮件很好,但我收到的标题是a7849972@srv29.000webhost.com,回复地址也是如此。我如何更改我的代码以在标题中获取人员的姓名?我正在使用以下代码:

<?php
if(isset($_POST['submit'])) {
   $to = 'chander_info@yahoo.com' ;     //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";
}
?>

为什么要将头分隔成两个不同的变量?您正在将FromReply-to标头作为附加参数传递给mail()函数。查看PHP的文档。

试试这个:

<?php
if(isset($_POST['submit'])) {
   $to = 'chander_info@yahoo.com' ;     //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";
   $headers .= "From: ".$_POST['FirstName']." ".$_POST['LastName']." <".$_POST['Email'].">'r'n"; 
   $headers .= "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);
   header('Location: http://coastlasercenter.com/html/message-contact.html');
echo "Your message has been received";
}
?>

顺便说一句,在将$_POST中的数据连接到电子邮件头之前,您应该考虑验证这些数据,因为这可能会导致电子邮件注入攻击。

在代码中使用类似的格式:

$headers .= "From: ".$userName." <".$userEmailAddress.">";

顺便说一句,您的字符集最好使用utf-8,而不是iso-8859-1