Gmail会转换并删除HTML和CSS内容

时间:2013-12-23 12:48:26

标签: php html css email gmail

我正在开发一个WebApp,它生成一些QR码并通过邮件发送给客户端。

我已经读过让gmail正确解释邮件的CSS等等。我应该以内联的方式将它包含在HTML中。

这是我的代码:

// Headers 
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'Content-Transfer-Encoding: base64' . "\r\n";
$headers .= 'To: ' . $qremail . "\r\n";
$headers .= 'From: Mehdi' . "\r\n";

$qr_images_url = "http://" . $_SERVER['HTTP_HOST'] . "/GPAYME-ticket/" . $PNG_WEB_DIR;

// Loop on the QR images 

$html_email .= "<img src='" . $qr_images_url . $qr_image_name . "' style='min-width: 225px; width: 225px; max-width: 225px; min-height: 225px; height: 225px; max-height: 225px; margin-right: 15px; border: 2px solid #D8D4D4; margin-bottom: 15px;' />";

// END of the Loop on the QR images 

mail($email, $subject, $html_email, $headers);

然后它发送邮件。

所以<img />代码应该是这样的:

<img src="http://croisentoi.com/GPAYME-ticket/QRTemp/Qr-Ticket-60ac6339aa0c9cb6121160d55f769882.png" style="min-width:225px;width:225px;max-width:225px;min-height:225px;min-height:225px;max-height:225px;margin-right:15px;border:2px solid #d8d4d4;margin-bottom:15px">

当收到邮件时,实际上有5个Gmail解释了<img />标签的内容:

1。一切正常: <img src="http://croisentoi.com/GPAYME-ticket/QRTemp/Qr-Ticket-60ac6339aa0c9cb6121160d55f769882.png" style="min-width:225px;width:225px;max-width:225px;min-height:225px;min-height:225px;max-height:225px;margin-right:15px;border:2px solid #d8d4d4;margin-bottom:15px">

2。已删除图片源网址属性: <img style="min-width:225px;width:225px;max-width:225px;min-height:225px;min-height:225px;max-height:225px;margin-right:15px;border:2px solid #d8d4d4;margin-bottom:15px">

第3。样式属性已删除: <img src="http://croisentoi.com/GPAYME-ticket/QRTemp/Qr-Ticket-19cde597bca16405b41cb8e3d3391d77.png">

4。在这种情况下,Gmail会在源网址属性+中添加额外字符(/ G + PAYME而不是/ GPAYME): <img src="http://croisentoi.com/G+PAYME-ticket/QRTemp/Qr-Ticket-368940b3754eb9c2b0fd57285efc9535.png" style="min-width:225px;width:225px;max-width:225px;min-height:225px;min-height:225px;max-height:225px;margin-right:15px;border:2px solid #d8d4d4;margin-bottom:15px">

5。在这种情况下,Gmail会在style属性中的css中添加额外的空格(宽度:2 25px;而不是宽度:225px;): <img src="http://croisentoi.com/GPAYME-ticket/QRTemp/Qr-Ticket-368940b3754eb9c2b0fd57285efc9535.png" style="min-width:225px;width:2 25px;max-width:225px;min-height:225px;min-height:225px;max-height:225px;margin-right:15px;border:2px solid #d8d4d4;margin-bottom:15px">

p.s:为了澄清起见,我删除了<img src=

中gmail添加的额外网址

你能对此有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

似乎您在不考虑(base64编码的?)最大线宽的情况下发送电子邮件。这样一些空格会被插入某个地方,或者部分丢失。

如果是这种情况,您可以解释所有示例:

  1. 没有分裂,全部在一行
  2. src属性名称中的空格(即“s rc”)
  3. style属性名称中的空格(即“st lye”)
  4. src属性值中的空格(URL编码空间为+)
  5. style属性值
  6. 中的空格