【问题标题】:HTML-Email annoying line-breakingHTML-Email 烦人的换行
【发布时间】:2012-08-26 07:46:11
【问题描述】:

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

GMail 和/或 Outlook 经常在标签期间准确地断行 - 导致外观和感觉完全损坏。所以可能会发生整个内容都在

中,因为结束标签被打破了换行..
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

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

【问题讨论】:

  • 请注意,当 HTML 行被认为对于电子邮件来说太长并且邮件服务器在任何地方中断该行时,就会发生这种情况。

标签: php html email


【解决方案1】:

简单的解决方法

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

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

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

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

【讨论】:

  • Woaaa,你成就了我的一天 :)) 你很简单的解决方法就像一个魅力 -> 我马上就没有损坏的邮件,在 Outlook 和 GMail 中......只是我想知道的另一件事。 .. 你知道为什么 Outlook 在表格布局的 TD 元素上删除我的“背景:url(an-image-url.jpg)”内联样式定义吗?任何其他经过测试的客户端都可以完美呈现我的背景图像样式,但不能完美呈现前景......
  • this 怎么样
  • 请注意,编码电子邮件中的 =3D 表示字符“=”(3D 是十六进制的 ASCII 代码。)
  • 出于兼容性原因,电子邮件每行不应超过 70 个字符。这就是为什么使用that = line breaks thingy 的原因。如果 html 标记的长度超过这 70 个字符,您的代码将无法在所有电子邮件客户端上运行。
  • @ManuelArwedSchmidt 你是对的,我删除了错误的部分
【解决方案2】:

&lt;table width=3D"100%" cellspacing=3D"0" border=3D"0" cellpadding=

它被称为quoted printable 编码,这在 html 电子邮件中很常见。例如,“=3D”代表“=”。

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

【讨论】:

  • 谢谢你的信息;)我不知道它可能是一种编码
【解决方案3】:
$message = imap_fetchbody($inbox,$id,2);
$message = quoted_printable_decode($message); // magic

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2018-06-20
    • 2021-08-22
    相关资源
    最近更新 更多