我正在深入研究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
但没有人写这个恼人的换行问题,但我不敢相信我是唯一一个有这个问题的人......:/
答案 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