HTML电子邮件令人讨厌的换行


HTML-Email annoying line-breaking

我正在深入研究html电子邮件,最后,我仍然有一个令人讨厌的换行问题没有解决:/

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

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

简单的解决方法

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

每个HTML标签都将从新的一行开始给你:

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

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

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

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

关于你的问题:我从来没有想过。如果不能查看源代码,很难调试。但你似乎已经找到了解决方案。:)

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