2013-06-24 48 views
1

我試圖發送一個PHP的郵件,但似乎我在的foreach有一個錯誤,因爲該郵件顯示HTML .. 這是我的代碼:HTML在PHP郵件顯示

<form method="post"> 
     <fieldset> 
      <legend>Contact Form</legend> 
      <label for="fullname">Votre Nom : 
      <input id="fullname" name="fullname" type="text" value="nelson" /> 
      </label> 
      <label for="emailaddress" class="margin">Votre e-mail: 
      <input id="email" name="email" type="text" value="" /> 
      </label> 
      <label for="message">Message:<br /> 
      <textarea id="message" name="message" cols="40" rows="8"></textarea> 
      </label> 
      <p> 
      <input id="submit-button" class="button gray stripe" type="submit" name="submit" value="Envoyer le message" /> 
      &nbsp;</p> 
     </fieldset> 
     </form> 

     <?php 
     foreach ($_POST as $value) { 
    $value = strip_tags($value); 
    $value = htmlspecialchars($value); 
} 

     $name = $_POST["fullname"]; 
     $email = "email:" .$_POST["email"]; 
     $message = "Nom: <br/>" .$name. "email:<br/> " .$email. "message: " .$_POST["message"]; 
     $to="[email protected]"; 
     $suject="site internet"; 
     if (isset($_POST['submit'])) { 
     mail($to, $suject, $message); 
     echo"mail had been sent"; 
     } 
     ?> 

任何人都可以請幫助我

回答

1

您需要設置Content-type頭在您的電子郵件:

$name = $_POST["fullname"]; 
$email = "email:" .$_POST["email"]; 
$message = "Nom: <br/>" .$name. "email:<br/> " .$email. "message: " .$_POST["message"]; 
$to="[email protected]"; 
$suject="site internet"; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
if (isset($_POST['submit'])) { 
mail($to, $suject, $message, $headers); 
echo"mail had been sent"; 

你的消息體也需要被包含在<html>標籤。

+1

它的工作...感謝 – Monteiro

+0

任何時候。如果這對您有用,請考慮將其標記爲答案。謝謝 – ElGavilan

1

你的foreach是有用的,只是這樣做。更快速比循環

$name = strip_tags(htmlspecialchars($_POST["fullname"])); 
$email = "email:" .strip_tags(htmlspecialchars($_POST["email"])); 
$message = "Nom: <br/>" .$name. "email:<br/> " .$email. "message: " .strip_tags(htmlspecialchars($_POST["message";)); 
0

要發送包含HTML的電子郵件,您必須設置標題,以便電子郵件客戶端知道電子郵件包含HTML。您還必須使您的電子郵件正文成爲HTML文檔。

$header = "MIME-Version: 1.0\r\n"; 
$header .= "Content-type: text/html; charset: utf8\r\n"; 
mail($to, $suject, $message, $header); 

然後在消息本身:

<html> 
    <head></head> 
    <body> 
     Content here 
    </body> 
</html>