Gmail使用html代码显示电子邮件

时间:2013-04-16 05:03:30

标签: php

我有一小段代码用于发送可以处理HTML代码的电子邮件。该消息在hotmail中完美显示,但在gmail中,所有html代码都被视为文本并显示。

以下是代码格式: -

$headers        = "From: $from \r\n <$email_return>"; 
$headers        .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";

ob_get_contents(); ?> 
--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>" 

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/plain; charset="utf-8" 
Content-Transfer-Encoding: 7bit

<?php echo $email_message;?>

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/html; charset="utf-8" 
Content-Transfer-Encoding: 7bit

<div style="text-align:left;"><img src="sitelogo.png" height="50px;"></div>
<br>
Dear <?php echo $name;?>,
<br><br>
Thanks!

<br><br><br>
<strong><i><?php echo $email_signature;?></i></strong><br><br>

--PHP-alt-<?php echo $random_hash; ?>-- 

<?php 
$message = ob_get_clean(); 
$mail_sent = mail($to, $subject, $message, $headers); 
echo $mail_sent ? "OK!!" : "not OK!!";
}
?>

我想知道我是否可以对php代码做任何正确显示,否则我可能不得不放弃html格式。谢谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试过quoted-printable而不是7bit

此外,没有标准的HTML标记,您开始使用div

还要先尝试放置text / html内容。

<强>更新

  

通常,组成多部分/替代实体的用户代理   应该按照偏好的顺序放置身体部位   是,最后的格式是最后一个。对于花哨的文本,发送用户   代理商应该把最简单的格式放在第一位,最丰富的格式   持续。接收用户代理应选择并显示最后一种格式   他们有能力展示。在其中一个的情况下   替代品本身是“multipart”类型,包含无法识别   子部分,用户代理可以选择显示该替代,   较早的替代方案,或两者兼而有之。

     

注意:从实施者的角度来看,它似乎更合理   扭转这种排序,最后有最简洁的选择。   然而,首先放置最简洁的替代品是最友好的   使用a查看mutlipart / alternative实体时的可能选项   不符合MIME的邮件阅读器。虽然这种方法确实强加了一些   合规邮件阅读器的负担,与旧邮件的互操作性   在这种情况下,读者被认为更重要。

自: http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

看起来您还没有在标头中声明MIME版本。例如。 MIME-Version: 1.0

答案 1 :(得分:0)

我有类似的问题。这不是Gmail或PHP的问题。在我的例子中,问题是当PHP从我的PHP源文件生成电子邮件消息时,如上所述,它以某种方式解释了Gmail不喜欢的行尾,也许它发送的是LF而不是CRLF,有点像这样。我没有看细节。我所知道的是,鉴于我的电子邮件的默认值是CRLF的行尾,我使用<?php echo "\r\n"; ?>明确写了所有行的结尾,而不是依赖文件中的空行,然后Gmail正确解释了信息。问题很可能是我用来编写PHP源文件的编辑器所特有的。就我而言,它是Notepad ++。也许它没有正确配置。现在,为了安全起见,我总是明确地在电子邮件中输入行尾,至少对于MTA和MUA必须理解的部分,Content-Type,边界并不重要。等等。