2

我在正确发送带引号的可打印编码 HTML 邮件时遇到了一些困难。我的 HTML 需要被分成几行来满足出于兼容性原因的要求,即不超过 79 个字符的行——我已经为这个用例找到了“软换行符”的概念。

一个工作示例是:

( mailto:abc@someonesdomain.tld?subject=3DReply%20to%20this%20Post%20%5B428=
2-8596-332127136989972_339826386220047-6307b30ea80af240f0557f2340d9758d%5D&=
body=3D******%20Enter%20your%20reply%20below%20this%20line%20and%20hit%20SE=
ND.%20You%20may%20also%20attach%20an%20image%20to%20your%20reply%20****** )

当我将行尾复制到记事本时,它仅显示 = CR LF。

所以我尝试使用wordwrap($newHtmlBody, 70, '='.PHP_EOL, true);,我的输出有点像上面的工作示例。但是,在 gmail 中查看发送的电子邮件时,它不会接受这一点。我究竟做错了什么?

HTML 内容上方的相关电子邮件标题/正文是:

MIME-Version: 1.0
From: "Admin" <no-reply@domain.tld>
Content-Type: multipart/alternative; boundary="_av-aRPROueRxMYL7a0Ro00ndA"
Message-Id: <20150302.ABCDEFGHIJKLMNOPQRSTUVWYXZ@domain.tld>
Date: Mon,  2 Mar 2015 15:41:38 +0100 (CET)

--_av-aRPROueRxMYL7a0Ro00ndA
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Plain text

--_av-aRPROueRxMYL7a0Ro00ndA
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
4

3 回答 3

1

简短的回答:

使用<pre>标签强制换行符在 HTML 中显示为换行符。

更长的答案:

您提议的内容(使用 wordwrap 功能)将发送的消息正文拆分为可管理的块,但不会影响它在客户端中的显示方式。在 HTML 中,包括“换行符”、制表符和多个空格在内的空格被转换为一个空格。这意味着在 Web 浏览器中查看 HTML 时,您的“软换行符”没有任何意义。输出将持续流动,直到它收到一个<br>或其他标签来破坏内容。

如果您有一些强制执行 79 个字符限制的邮件发送限制,那么您所做的可能就足够了,即使它在客户端中显示超过 79 个字符。(通常“79 个字符”的限制是针对电子邮件的纯文本部分,而不是 HTML 部分 - 所以请检查该限制来自何处。)

如果你必须让它以 79 个字符显示,那么<pre>在 HTML 中使用标签会告诉它不要折叠空白,因此你的中断应该显示你要求它们在哪里。

于 2015-03-11T00:54:08.180 回答
-1

将“Content-Transfer-Encoding”设置为“7bit”而不是“Quoted-Printable”。某些邮件客户端(例如 Outlook 和 Thunderbird)似乎在每一行都插入了双倍间距换行符。原因是 MIME 中的 'content-transfer-encoding' 设置为 'quoted-printable',这会将回车换行 (CRLF) 换行符添加到电子邮件的源内容中,这些内容是这些邮件客户端解释的字符。

于 2015-03-11T06:43:46.823 回答
-2

%20 软换行符。你不需要做任何特别的事情。如果您像这样键入长行,Gmail 会为您换行:

echo '<a href="mailto:me@example.com?subject=Reply%20to%20this%20Post& body=Enter%20your%20reply%20below%20this%20line%20and%20hit%20SEND.%20You%20may%20also%20attach%20an%20image%20to%20your%20reply!%20Repeat:%20Enter%20your%20reply%20below%20this%20line%20and%20hit%20SEND.%20You%20may%20also%20attach%20an%20image%20to%20your%20reply!">click me</a>';

于 2015-03-08T06:31:34.563 回答