10

我正在深入研究 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">

我可以在这封奇怪的电子邮件的几乎任何一行上看到这一点 -> 在任何行上总是以“=”结尾,尽管它位于标签或参数字的中间……而且它工作得很好!怎么样?在我看来,这个换行符是在电子邮件客户端之前生成的,但这只是我的猜测......

我可以找到非常好的文章如何创建正确的 HTML 电子邮件,如下所示:

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

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

4

3 回答 3

13

简单的解决方法

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

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

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

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

于 2012-08-31T13:26:01.830 回答
2

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

它被称为引用的可打印编码,这在 html 电子邮件中很常见。例如,“=3D”代表“=”。

关于您的问题:我从未想过。不看源码就很难调试。但无论如何,你似乎有一个解决方案。:)

于 2012-08-31T20:59:43.233 回答
0
$message = imap_fetchbody($inbox,$id,2);
$message = quoted_printable_decode($message); // magic
于 2016-07-19T19:20:48.313 回答