邮件连接多个身体线

在一个 mailto 链接中很难让多行正常工作

在我的例子中,我正在使用 Outlook 默认的邮件阅读器测试它。

以下内容被放在一个锚 href 中:

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

只有“ message here”显示在电子邮件正文中。(不管我使用的是 chrome 还是 IE)

有什么想法吗?

112041 次浏览

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

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

虽然上面的方法在很多情况下都有效,但是用户 olibre 指出指出,控制 mailto URI 方案的 RFC 指定应该使用 %0D%0A(回车 + 换行)而不是 %0A(换行)。参见: 新线代表

为了得到身体线条,使用 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;

检查 EncodeURIComponent文件

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

mailtoURI 计划RFC2368(1998年7月)和 RFC6068(2010年10月)指定。
下面是最后一个 RFC 的 第五部分摘录:

[ ... ]消息体中的换行符必须用 "%0D%0A"编码。
实现可以在消息体中添加最后一个换行符 即使体内没有 "%0D%0A"尾随[ ... ]

第六部分中还可以看到来自同一 RFC 的示例:

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

上述 mailto机构相当于:

send current-issue
send index