129

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

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

以下内容放在锚href中:

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

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

想法?

4

4 回答 4

226

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

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

尽管上述方法在许多情况下似乎都有效,但用户 olibre指出管理 mailto URI 方案的 RFC 指定%0D%0A应该使用 (回车 + 换行) 而不是%0A(换行)。另请参阅:换行表示

于 2012-04-27T19:04:37.537 回答
45
  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
于 2014-12-12T15:49:23.540 回答
20

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

body_line =  escape("\n");

所以

href = "mailto:me@my.com?body=hello,"+body_line+"I like this.";
于 2013-10-04T11:41:54.817 回答
16

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

例子

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

emailBody = encodeURIComponent(emailBody);

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

检查encodeURIComponent文档

于 2014-10-03T16:59:56.827 回答