2012-03-11 7 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

答えて

2

なぜヘッダーを2つの異なる変数に分割していますか? FromReply-toヘッダーをmail()関数の追加パラメータとして渡しています。 PHPのdocumentationをチェックしてください。

はこれを試してみてください:それはemail injection attacksにつながることができますので、

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

ところで、あなたはあなたの電子メールのヘッダにそれを連結する前に、$ _POSTに取得しているデータを検証検討すべきです。

+0

あなたのコードの残りの部分を見るもう1つのことは、クライアントを別のページにリダイレクトしている場合、ロケーションヘッダーを送信した後でエコーを見ることができなくなることです。あなたはあなたのメッセージをmessage-contact.htmlに表示する必要があります –

+0

はい私はそれを削除することを忘れてしまっただけですテストのためだけに...私はcontact-us.htmlファイルにある妥当性確認 –

+0

あなたのスクリプトで提案した変更はあなたに役立ちましたか? ? –

1

使用してコード内でこの形式のようなもの:

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

それはあなたの文字セット用のUTF-8代わりのISO-8859-1を使用することをお勧めしますちなみに。

+0

$ userNameと。$ userEmailAddressに入れる必要がある値。 –

+0

$ userNameは '$ _POST [" FirstName "]'で、$ userEmailAddressは '$ _POST [" email "]'でなければなりません –

+0

ハレー! SabreiさんとAndrésGattinoniさんの両方に感謝しました。 $ _ POST ['FirstName']。$ "POST" [LastName ']。 "<"。$ _ POST [' Email ']。 "> "; ' –

関連する問題