html电子邮件的mail()标题问题

时间:2009-05-12 00:55:37

标签: php email header

我正在尝试为php中的网站编写错误报告功能。我无法获得正确的标题,以便电子邮件显示为html。

这是代码:     

if( isset($_POST['submit']) )
{
    $browser = $_SERVER['HTTP_USER_AGENT'];
    $page = $_POST['page'];
    $email = $_POST['email'];
    $error = $_POST['error'];

    $message  =  "<html><body> \n";   
    $message .=  "Email: $email \n";
    $message .=  "Page: $page \n";
    $message .=  "OS/ Browser: $browser \n";
    $message .=  "Error: $error \n";
    $message .=  "</body></html> \n";

    $headers  = 'MIME-Version: 1.0' . '\r\n';
    $headers .= 'Content-type: text/html; charset="iso-8859-1"' . '\r\n';
    $headers .= 'From:  <code@website.com>' . '\r\n';
    $headers .= 'Reply-To: $email ' . '\r\n';
    $headers .= 'X-Priority: 1' . '\r\n';

    $subject  = "[ERROR REPORT] Page: " . $page;

    mail("myEmail@gmail.com", $subject, $message, $headers );

    $mesg = "Thank you for your report!";

}

?>

3 个答案:

答案 0 :(得分:2)

就个人而言,我是Pear Mail(http://pear.php.net/package/Mail)和Pear Mail_Mime(http://pear.php.net/package/Mail_Mime)的粉丝。

发送HTML电子邮件(对于不支持HTML的客户端使用纯文本正文)就像这样简单:

include_once('Mail.php');
include_once('Mail/Mime.php');

$htmlBody = '<html><body><b>Hello World</b></body></html>';
$plainBody = 'Your client doesn\'t support HTML';
$em = Mail::factory('sendmail');
$headers = array('From'=>'me@domain.com', 'To'=>'joe@schmoe.com', 'Subject'=>'Cool Email');
$mime = new Mail_Mime();
$mime->setTxtBody($plainBody);
$mime->setHtmlBody($htmlBody);
$message = $mime->get();
$headers = $mime->headers($headers);
$mail = $em->send('joe@schmoe.com', $headers, $message);

答案 1 :(得分:2)

我注意到的一个问题是你需要在适当的位置使用双引号而不是单引号。

使用:"\r\n"

而不是:'\r\n'

答案 2 :(得分:1)

基本上重复了我为another question所回答的内容,我在大多数情况下都是为了自己动手,但是当涉及到邮件时,我会衷心地建议让自己更轻松,并使用类似{ {3}}或Swift Mailer(按此顺序,为了我的钱)。

作为副奖金(假设您指定回复等),您被标记为垃圾邮件的可能性也大大降低。

编辑:也许这只是您使用的示例,但您的邮件中没有实际的HTML。为什么不使用纯文本?是的,我也会使用我建议用于纯文本的一个类。