2013-06-24 132 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>