2012-03-11 28 views
0

我在我的网站上使用PHP邮件表单。我收到的邮件很好,但是我收到的邮件的格式为[email protected],回复地址也一样。我如何更改我的代码以在头中获取该人的姓名?我使用下面的代码:PHP邮件表单 - 电子邮件标题

<?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"; 
} 
?> 
+0

你最好使用像'PHPmailer'这样的邮件类。内建的mail()函数不适合当今的电子邮件标准,很难修改这些东西。 – Corubba 2012-03-11 12:59:41

回答

2

你为什么要分离标题变为两个不同的变量? 您将FromReply-to标题作为mail()函数的附加参数传递。检查PHP的documentation

试试这个:

<?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"; 
    $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"; 
} 
?> 

BTW,你应该考虑它串联到您的电子邮件标题,因为它可以导致email injection attacks前验证你要在$ _ POST数据。

+0

另一件事,看看你的代码的其余部分:如果你将客户端重定向到另一个页面,他将无法看到发送Location标头后回显的内容。你应该在message-contact.html上显示你的信息 – 2012-03-11 13:29:40

+0

yes echo我忘记删除它只用于测试......验证我联系我们-html文件 – 2012-03-11 15:29:31

+0

我在脚本中建议的更改是否可以帮助你? – 2012-03-11 15:38:29

1

使用这样的格式代码:

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

通过它更好地利用ISO-8859-1UTF-8,而不是你的字符集的方式。

+0

我必须输入什么值。$ userName和$ userEmailAddress。 – 2012-03-12 02:54:06

+0

$ userName必须是'$ _POST [“FirstName”]'和$ userEmailAddress必须是'$ _POST [“email”]' – 2012-03-12 07:13:32

+0

HURRAY!它对马德里Sabrei和AndrésGattinoni都很感谢。即使我加了最后一个名字也是'$ headers。=“From:”。$ _ POST ['FirstName']。“”。$ _ POST ['LastName']。“<”。$ _ POST ['Email']。“> “;' – 2012-03-12 07:26:35