php格式化的html显示在Yahoo邮件但不是gmail

时间:2010-09-21 15:14:42

标签: php html email gmail

我正在使用MAMP(LAMP堆栈开发环境)使用PHP发送电子邮件。

代码如下:

$out_message = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>You have requested an appointment with the Smile Zone</title>
</head>

<body>
<p style="font-family:Arial, Helvetica, sans-serif;"><strong>Dear '.$details_name.'</strong></p>
<p style="font-family:Arial, Helvetica, sans-serif">You have requested an appointment!</p>
<p style="padding:10px;"><strong>Please note that this appointment is currently unconfirmed</strong></p>
</body>
</html>
';

//now for the client side:
$out_to = 'john@gmail.com';
$out_subject = 'My Subject';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= "To: John <john@gmail.com> \r\n";
$headers .= 'From: The Smile Zone <noreply@smile-zone.com>' . "\r\n";

$success2 = mail($out_to, $out_subject, $out_message, $headers);

当我在Apple Mail中发送此电子邮件和视图时,它看起来应该如此,但在GMail中,在浏览器中我得到的只是原始来源。

为什么会这样?

3 个答案:

答案 0 :(得分:2)

你有冲突的字符集:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

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

将它们更改为匹配。

答案 1 :(得分:0)

删除这些标记

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>You have requested an appointment with the Smile Zone</title>
</head>

<body>

有些人使用完整链接

使用某些标准库,例如

  • 的Zend_Mail
  • 梨邮件

答案 2 :(得分:0)

与其他网络客户相比,Gmail对电子邮件格式的宽容度要低得多。您需要符合RFC2822。我的猜测是PHP中的mail函数不会为多部分消息创建符合RFC的消息。 (即包含文本和HTML部分的消息。)根据mail的文档,最好使用PEAR::Mail_Mime