2012-12-13 142 views
1

我已经写了这个PHP脚本来发送HTML邮件。但是,电子邮件输出显示为原始文本,不能解释为html。用PHP脚本发送HTML邮件

<?php 
if(isset($_POST['submit'])) { 
    $to = $_POST['email']; 
    $from = "[email protected]"; 
    $subject = "subject"; 
    $message = "<div style=\"background:red;height:100px; " . 
     "width:100px;display:block;\">dfsdf</div>"; 

    $headers = "MIME-Version: 1.0rn"; 
    $headers .= "Content-type: text/html; charset=iso-8859-1rn"; 
    $headers .= "From: $from\r\n"; 
    mail($to, $subject, $message, $headers); 
    echo "Message has been sent....!"; 
}else{ 
    echo "Add an email address"; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 
<form action="/send" method="post"> 
    <input name="email" type="text" /> 
    <input name="submit" type="submit" value="Submit"> 
</form> 
</body> 
</html> 

我收到的这封电子邮件是:

<div style="background:red;height:100px;width:100px;display:block;">dfsdf</div> 

我希望能得到一个红色的框。我究竟做错了什么?

+0

方式读者,它应该和这段代码无关。 – ScoPi

回答

2

尝试改变电子邮件标题:content-typecharset这样的:

$headers = "MIME-Version: 1.0rn"; 
$headers .= "Content-type: text/html; charset=iso-8859-1rn"; 

$headers = "MIME-Version: 1.0 \r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
0

这里对我来说是什么在起作用:

$mailheaders = "From: $email\n"; 
$mailheaders .= "Reply-to: $email\n"; 
$mailheaders .= "Content-Type: text/html; charset=iso-8859-1\n"; 

mail('[email protected]', 'Test', 'Foo bar', $mailheaders); 
1
$mail_to=$tomail; 

    $mail_from=$frommail; 

    $mail_sub="Subject"; 

    $mail_mesg="Body of your Message"; 

    $headers = "MIME-Version: 1.0 \r\n"; 

    $headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 

    $headers .= "From: $frommail\r\n"; 

    if(mail($mail_to,$mail_sub,$mail_mesg,$headers)) 
     $result = "send successfully"; 
    else 
     $result = "failed to send mail"; 
1

如果将t Ø使用$headers .= "Content-type: text/html; charset=iso-8859-1". "\r\n";$headers = "MIME-Version: 1.0\r\n"; 代替

$标题=“内容类型:text/html的;字符集= ISO-8859-1rn“; $标题= ”MIME-版本:1.0rn“;

所以尽量电子邮件似乎是完全取决于您的电子邮件这个

<?php 
    if(isset($_POST['submit'])) { 
     $to = $_POST['email']; 
     $from = "[email protected]"; 
     $subject = "subject"; 
     $message = "<div style=\"background:red;height:100px;width:100px;display:block;\">dfsdf</div>"; 
     $headers = "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-type: text/html; charset=iso-8859-1". "\r\n"; 
     $headers .= "From: $from\r\n"; 
     mail($to, $subject, $message, $headers); 
     echo "Message has been sent....!"; 
    }else{ 
     echo "Add an email address"; 
    }?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
    </head> 
    <body> 
    <form action="/send" method="post"> 
     <input name="email" type="text" /> 
     <input name="submit" type="submit" value="Submit"> 
    </form> 
    </body> 
    </html>