PHP почтовая форма - заголовок письма - PullRequest
1 голос
/ 11 марта 2012

Я использую почтовую форму 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";
}
?>

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Почему вы разделяете заголовки на две разные переменные?Вы передаете заголовки From и Reply-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, прежде чем объединять их с заголовками электронной почтытак как это может привести к атакам по электронной почте .

1 голос
/ 11 марта 2012

Используйте в своем коде что-то вроде этого формата:

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

Кстати, лучше использовать utf-8 вместо iso-8859-1 для вашей кодировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...