在mailto邮件正文中插入换行符

265

我希望在我的mailto正文中插入一个换行符。

我尝试使用%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 alt="Subscribe" class="center" height="50" src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" width="137"></a>

4
可能出现重复:https://dev59.com/FmUp5IYBdhLWcg3w1aF7(翻译):这个问题可能已经有了相应的解决方案:https://dev59.com/FmUp5IYBdhLWcg3w1aF7。 - John
1
@John 这怎么是重复的问题呢?这是一个非常具体的关于使用“%20”输入新行的问题,而不是像这个问题那样如何换行。 - jdmdevdotnet
1
在我看来,这似乎是一个重复的问题。那个问题问的是“如何像使用空格一样插入换行符”。它并不是在询问如何将%20作为换行符使用。我唯一看到的实质性区别是这个问题问的是正文,而那个问题问的是主题。但无论哪种情况,答案都是相同的。 - user47589
这个回答解决了你的问题吗?mailto链接多行正文 - jtbandes
7个回答

370
我建议你尝试使用HTML标签<br>,以防你的营销应用程序能够识别它。
我使用%0D%0A。只要电子邮件是HTML格式的,这应该可以工作。
<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0AFirstname%20%3A"><img alt="Subscribe" class="center" height="50" src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" width="137"></a>

在Firstname之前去掉%20,否则下一行将以空格作为第一个字符。

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


2
我已经尝试过%0D%0A,但对我没有用。我使用电子邮件营销解决方案发送我的通讯。我猜测它正在重写我的代码。 - Marion
1
哦,如果你正在使用另外的解决方案,你尝试过使用HTML标签"<br>"吗?当我在使用第三方应用程序时,有时候这个方法是有效的。 - Jem
3
我用另一个平台进行了一些测试,我的代码完美地运行了!显然是因为我使用的解决方案。所有那些白费的时间...抱歉,伙计们,再次感谢你们的帮助。 - Marion
7
如果您想将每个 <br>, <br/><br /> 转换为 %0D%0A,您可以使用 var emailBody = htmlBody.replace(/<br\s*\/?>/mg,"%0D%0A"); - João Pimentel Ferreira
1
这对我来说导致了冒号。最终我使用了%0A%0A。 - Keyslinger
<br>不起作用,唯一让我成功的方法是%0D%0A。 - Mostafa

187
根据定义“mailto:” 的RFC2368,再加上RFC1738中的示例,明确指出生成换行符的唯一有效方式是使用%0D%0A
这也适用于所有url方案,例如gopher,smtp,sdp,imap,ldap等。

15
请注意,如果您正在使用JavaScript构建mailto链接,则可以使用escape('\r\n')来获取%0D%0A - Mark Rhodes
9
附注:如果你使用ES6/ES2015字符串模板构建链接,原始代码(%0D%0A)完全可以正常工作。 - Adam Simpson
2
@MarkRhodes:由于mailto是一个URI,您也可以使用encodeURI(myMailToURIString),这将转义邮件正文中所需的所有字符 :-) - Lars Juel Jensen

15
<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

12

如果您想使用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

1
@littlecoder 因为这是一个糟糕的回答:格式不佳,措辞不当,而且遗漏了必要的上下文。它很可能会让来到这个页面的人感到困惑,而不是帮助他们。根据本站的标准,它是没有用处的,因此被相应地投票了。 - AquilaIrreale

5

有趣的是,在 Gmail 的安卓版中,%0D%0A 不起作用,而<br> 起作用:

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

您正在将“<br>”添加到字符串中,而在邮件正文中它会显示为“<br>”。 - Sergi
1
这似乎已经不再正确了,因为在Android 10上最新的GMail应用程序中,<br>将被打印为“<br>”,而不是换行符。 - Frederik

0
你可以选择使用\r或者换行符\n。

-2

对于单行和双行换行,以下是相应的代码。

单行换行:%0D0A
双行换行:%0D0A%0D0A


16
“triple break” 是什么意思? - Pavel Bariev
@PavelBariev %0D0A%0D0A%0D0A - atereshkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接