24

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

  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;

如果我做一个“警报(ebody);” 我得到名字和姓氏之间的换行符,但是当它打开 Outlook 时,整个 ebody 字符串出现在电子邮件正文中没有换行符。

我也试过 \n 。有什么可以换行的吗?

提前致谢

4

4 回答 4

50

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变量中编码任何愚蠢的字符。

于 2012-04-19T02:42:25.237 回答
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

于 2012-05-07T07:10:21.907 回答
2

我希望 Outlook 尝试将其输出为 html/富文本,因此在这种情况下,您需要类似以下内容(包括 urlencoded 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;
于 2012-04-19T00:08:45.913 回答
0

有时,当您使用 HTML/JavaScript 从 SharePoint 内容编辑器 Web 部件打开 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>

于 2021-04-05T10:37:10.347 回答