mailto链接多条身体线条


120

无法在mailto链接中使多行正常工作

就我而言,我正在使用Outlook默认邮件阅读器对其进行测试。

以下内容放置在锚href中:

mailto:email@address.com?&subject=test&body=type%20your&body=message%20here

电子邮件正文中仅显示“此处的消息”。(无论我使用Chrome还是IE)

有什么想法吗?

Answers:


208

您可以使用URL编码将换行符编码为%0A

mailto:email@address.com?subject=test&body=type%20your%0Amessage%20here

尽管上面的方法在许多情况下似乎可行,但用户olibre 指出,管理mailto URI方案的RFC指定%0D%0A应使用(回车+换行符)代替%0A(换行符)。另请参阅:换行表示法


4
谢谢,这对我来说效果很好,并且似乎比其他互联网解决方案要简单得多。
bryn

这应该适用于所有特殊字符,对吗?&=%26,%=%25,此模式不存在任何字符吗?
blast_hardcheese 2013年

2
有关信息,$0A很简单escape( "\n" )
divillysausages 2014年

2
该编码器使用标准encodeURIComponent来编码URI组件。
Cees Timmerman

1
%0D%0A为我工作过以
收发

40
  1. bodymailto字符串中使用单个参数
  2. 使用%0D%0A如换行符

mailtoURI方案是通过指定由RFC2368(1998年7月)和RFC6068(2010年10月)。
下面是最后一个RFC 第5节的摘录:

邮件正文中的换行符必须使用编码"%0D%0A"
即使消息体中没有尾随"%0D%0A",实现也可以在消息的主体中添加最后的换行符[...]

另请参见第6节中来自同一RFC的示例:

<mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index>

上面的mailto正文对应于:

send current-issue
send index


15

这就是我要做的,只需添加\n并使用encodeURIComponent

var emailBody = "1st line.\n 2nd line \n 3rd line";

emailBody = encodeURIComponent(emailBody);

href = "mailto:me@somesite.com?body=" + emailBody;

检查encodeURIComponent文档


include有什么用encodeURIComponent
frakman1年

1
@ frakman1 encodeURIComponent是一个JavaScript函数。您可以使用它而无需任何包含。
kiranvj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.