无法在mailto链接中使多行正常工作
在我的情况下,我正在使用Outlook默认邮件阅读器进行测试。
以下是一个锚点href:
mailto:email@address.com?&subject=test&body=type%20your&body=message%20here
只有“此处的消息”显示在电子邮件正文中。 (无论我使用chrome还是IE)
想法?
答案 0 :(得分:193)
您可以使用URL encoding将换行符编码为%0A
。
mailto:email@address.com?subject=test&body=type%20your%0Amessage%20here
虽然上述内容似乎在许多情况下都有效,但用户olibre points out指示管理mailto URI方案的RFC指定应使用%0D%0A
(回车+换行符)而不是{{1 (换行)。另见:Newline Representations。
答案 1 :(得分:35)
body
字符串中使用单个mailto
参数 %0D%0A
作为换行符 mailto
URI Scheme由RFC2368(1998年7月)和RFC6068(2010年10月)指定。
以下是最后一个RFC section 5的摘录:
[...]消息正文中的换行符必须使用
中没有尾随"%0D%0A"
进行编码 实现可以在消息正文中添加最后一个换行符 即使正文[...]"%0D%0A"
另见section 6来自同一RFC的示例:
<mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index>
以上mailto
正文对应于:
send current-issue
send index
答案 2 :(得分:16)
要使用escape()
来获取正文body_line = escape("\n");
所以
href = "mailto:me@my.com?body=hello,"+body_line+"I like this.";
答案 3 :(得分:10)
这就是我的工作,只需添加\n
并使用encodeURIComponent
实施例
var emailBody = "1st line.\n 2nd line \n 3rd line";
emailBody = encodeURIComponent(emailBody);
href = "mailto:me@somesite.com?body=" + emailBody;