mailto链接多个身体线

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

在我的情况下,我正在使用Outlook默认邮件阅读器进行testing。

以下是放在锚href:

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

只有“邮件在这里”出现在电子邮件正文中。 (不pipe我使用chrome还是IE)

想法?

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

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

尽pipe上面的例子似乎在很多情况下都能正常工作,但用户olibre 指出 ,控制mailto URIscheme的RFC指定应该使用%0D%0A (回车+换行)而不是%0A (换行)。 另见: 换行符表示法 。

  1. mailtostring中使用单个body参数
  2. 使用%0D%0A作为换行符

mailto URIscheme由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 

要获得身体线条使用escape()

 body_line = escape("\n"); 

所以

 href = "mailto:me@my.com?body=hello,"+body_line+"I like this."; 

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

 var emailBody = "1st line.\n 2nd line \n 3rd line"; emailBody = encodeURIComponent(emailBody); href = "mailto:me@somesite.com?body=" + emailBody;