在邮件正文中插入换行符

Posted

技术标签:

【中文标题】在邮件正文中插入换行符【英文标题】:Insert a line break in mailto body 【发布时间】:2014-05-11 01:02:41 【问题描述】:

我想在我的邮件正文中插入一个换行符。 我尝试了 %0A、%0D 和 %0D%0A。没有什么对我有用。 我在 Mac OSX 上使用 Google Chrome 在 Gmail、Yahoo、Apple Mail、Outlook 2010、Outlook.com 和 Thunderbird 上进行了测试。

有什么帮助吗?

这是我的代码:

<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0A%20Firstname%20%3A"><img  class="center"  src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" ></a>

【问题讨论】:

可能重复:***.com/questions/15019689/… @John 怎么是重复的?这是一个关于%20 被用来输入新行的非常具体的问题,而不是如何像这个问题那样制作新行。 对我来说像是个骗子。该问题询问“我如何像插入空格一样插入换行符”。它不是在询问如何使用 %20 as 换行符。我看到的唯一实质性区别是这是询问身体,而该问题询问的是主题。不过,无论哪种情况,答案都是一样的。 这能回答你的问题吗? mailto link multiple body lines 【参考方案1】:

我建议您尝试使用 html 标签&lt;br&gt;,以防您的营销应用程序能够识别它。

我使用%0D%0A。只要电子邮件是 HTML 格式,这应该可以工作。

<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0AFirstname%20%3A"><img  class="center"  src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" ></a>

您可能希望在 Firstname 之前取出 %20,否则下一行的第一个字符将有一个空格。

请注意,当我使用您的代码对此进行测试时,它可以正常工作(以及一些额外的间距)。您是否使用了不允许 HTML 格式化的邮件客户端?

【讨论】:

我已经尝试过%0D%0A,但它对我不起作用。我使用电子邮件营销解决方案来发送我的时事通讯。我想它正在重写我的代码 哦,如果您使用单独的解决方案,您是否尝试过 HTML 标签“”?当我使用 3rd 方应用程序时,这有时会起作用。 我在其他平台上做了一些测试,我的代码运行良好!它肯定来自我使用的解决方案。所有这些时间都白白浪费了......对不起,再次感谢您的帮助 如果您想将每个&lt;br&gt;&lt;br/&gt;&lt;br /&gt; 转换为%0D%0A,您可以执行var emailBody = htmlBody.replace(/&lt;br\s*\/?&gt;/mg,"%0D%0A"); 这对我来说是冒号。我最终使用了 %0A%0A【参考方案2】:

根据定义mailto: 的RFC2368,并通过RFC1738 中的示例进一步加强,明确指出生成换行符的唯一有效方法是使用%0D%0A

这也适用于所有 url 方案,例如 gopher、smtp、sdp、imap、ldap 等。

【讨论】:

请注意,如果您使用 javascript 构建 mailto 链接,则可以使用escape('\r\n') 获取%0D%0A 附加说明:如果您使用 ES6/ES2015 字符串模板构建链接,原始代码 (%0D%0A) 可以正常工作。 @MarkRhodes:由于 mailto 是一个 URI,因此您也可以使用 encodeURI(myMailToURIString),它将转义邮件正文中所需的所有字符 :-)【参考方案3】:

对于使用 JavaScript 的纯文本电子邮件,您也可以使用 \rencodeURIComponent()

例如,这条消息:

hello\rthis answer is now well formated\rand it contains good knowleadge\rthat is why I am up voting

URI 编码,结果:

hello%0Dthis%20answer%20is%20now%20well%20formated%0Dand%20it%20contains%20good%20knowleadge%0Dthat%20is%20why%20I%20am%20up%20voting

并且,使用 href:

mailto:me@house.country?body=hello%0Dthis%20answer%20is%20now%20well%20formated%0Dand%20it%20contains%20good%20knowleadge%0Dthat%20is%20why%20I%20am%20up%20voting

将产生以下电子邮件正文:

hello
this answer is now well formated
and it contains good knowleadge
that is why I am up voting

【讨论】:

@littlecoder 因为这是一个糟糕的答案:格式差、措辞差并且忽略了基本上下文。登陆此页面的人很可能会感到困惑,因为它可以帮助他们。按照本网站的标准,它没有用处,因此已相应投票【参考方案4】:

奇怪的是,android 的 gmail 中 %0D%0A 不起作用,而 &lt;br&gt; 起作用:

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=First line<br>Second line">
   click here to mail me
</a>

【讨论】:

您在字符串中添加“”,它在邮件正文中显示为“”。 这似乎不再适用于 Android 10 上最新的 GMail 应用程序 - &lt;br&gt; 将打印为“”而不是换行符。【参考方案5】:
<a href="mailto:example@gmail.com?subject=Request&body=Hi,%0DName:[your name] %0DGood day " target="_blank"></a>

尝试添加 %0D 来换行。这肯定会奏效。

上面的代码会显示如下:

Hi,
Name:[your name] 
Good day

【讨论】:

【参考方案6】:

这里的单行和双行换行代码如下。

单次休息:%0D0A 双休:%0D0A%0D0A

【讨论】:

请问三连休是什么? @PavelBariev %0D0A%0D0A%0D0A

以上是关于在邮件正文中插入换行符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中做换行电子邮件正文?

电子邮件正文中是不是存在任何注入漏洞?

MailMessage 将字符串作为正文发送,在 Outlook 中没有换行符

mailto的深入用法

Oracle PL/SQL查询结果如何自动换行

在 HTML 中安全地插入换行符