HTML-Email令人讨厌的破线

时间:2012-08-31 13:21:42

标签: php html email

我正在深入研究html-email的内容,最后,我还有一个令人讨厌的换行问题:/

GMail和/或Outlook通常会在标签期间严格破坏生产线 - 导致外观完全破损感觉..所以可能发生整个内容在< h2>因为结束标记是通过换行符打破的。

m</strong><br/>Passwort: <
strong>20o3a7

这是我的PHPMailer代码生成的电子邮件损坏的一个例子..

现在我对一家公司的电子邮件很着迷,这是一个完美风格的时事通讯..在那里我看到了这样的代码:

<table width=3D"100%" cellspacin=
g=3D"0" border=3D"0" cellpadding=3D"0">

这几乎可以看到这个奇怪的电子邮件的任何一行 - &gt;在任何一行上总是以“=”结尾,如果它位于标签或参数字的中间,那么它完全正常工作!那怎么样?在我看来,这个换行符是在它发送到电子邮件客户端之前生成的,但这只是对我的推测......

我可以找到非常好的文章如何创建一个正确的HTML-Email,如下所示:

http://24ways.org/2009/rock-solid-html-emails

但没有人写这个恼人的换行问题,但我不敢相信我是唯一一个有这个问题的人......:/

3 个答案:

答案 0 :(得分:13)

简单的解决方法

$body = str_replace("<","\r\n<", $body);

每个HTML标记都会从新行开始,为您提供:

m
</strong>
<br/>Passwort: 
<strong>20o3a7

另一件事是,我在许多项目中使用PHPMailer,向所有邮件客户端发送了数千封电子邮件,我从未遇到过这个问题。确保您的代码正常。 (也许你的文本编辑器正在包装那些行?)

答案 1 :(得分:2)

  

<table width=3D"100%" cellspacing=3D"0" border=3D"0" cellpadding=

它被称为quoted printable编码,这对于html电子邮件来说很常见。 '= 3D'例如代表'='。

关于你的问题:从未发生在我身上。如果不能查看源代码就很难调试。但无论如何,你似乎得到了一个解决方案。 :)

答案 2 :(得分:0)

$message = imap_fetchbody($inbox,$id,2);
$message = quoted_printable_decode($message); // magic