Javascript如何在mailto的正文中添加换行?

27

我正在使用表单中的值设置电子邮件的正文

  firstname = bob
  lastname = dole

   ebody = 'First Name: ' + firstname + '\r\n' + 'Last Name: ' + lastname

  window.location.href = 'mailto:myemail@mycompany.com?subject=test
  email&body=' + ebody;

如果我执行 "alert(ebody);",我会在名字和姓氏之间得到换行符,但是当它打开Outlook时,整个 ebody 字符串将出现在电子邮件正文中而没有换行符。

我也尝试了只用 \n。有什么方法可以换行吗?

提前致谢。


只是一个想法,你尝试过像 \\r\\n 这样转义反斜杠吗? - inhan
1
你尝试过对字符进行编码吗?-> %0D%0A - GNi33
2
你的电子邮件的MIME类型是text/plain吗?Outlook可能会尝试将其解释为富文本。 - g13n
4个回答

56

RFC 2368指出,mailto的正文内容必须使用URL编码,并对通常在URL中编码的字符使用%转义。这些字符包括空格和(如2368的第5节中明确指出的)CR和LF。

您可以通过编写以下代码来实现:

ebody = 'First%20Name:%20' + firstname + '%0D%0A' + 'Last%20Name:%20' + lastname;

但是最好让JavaScript为您完成转义,这样更容易更好,像这样:

ebody = 'First Name: ' + firstname + '\r\n' + 'Last Name: ' + lastname;
ebody = encodeURIComponent(ebody);

这不仅可以节省你不必识别和查找需要编码的固定文本中十六进制值的时间,而且还可以对firstnamelastname变量中任何奇怪的字符进行编码。


9
你可以使用编码 %0D%0A 来进行换行。
firstname = 'Aung ';
lastname = 'Kyaw Zaw';

ebody = 'First Name: ' + firstname + '%0D%0A' + 'Last Name: ' + lastname;

window.location.href = 'mailto:myemail@mycompany.com?subject=testemail&body=' + ebody;

http://www.w3schools.com/tags/ref_urlencode.asp


2
我期望Outlook尝试将其输出为HTML /富文本,因此在这种情况下,您需要类似以下内容的东西(包括已编码的URL br标记):
 firstname = bob
  lastname = dole

   ebody = 'First Name: ' + firstname + '%3C%2Fbr%3E' + 'Last Name: ' + lastname

  window.location.href = 'mailto:myemail@mycompany.com?subject=test
  email&body=' + ebody;

1
有时候,当你使用HTML/JavaScript从SharePoint内容编辑器WebPart打开Outlook时,你需要考虑以下选项。
使用以下代码-
%0D%0A%0D%0A
来换行。

<a href="mailto:jegan.baskaran@domain.de?subject=Hello%20there%20Mr%20Jegan&amp;body=Hello%20Jegan,%0D%0A%0DHowr%20are%20you%20boss.">E-Mail to Jegan</a>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接