Javascript在mailto正文中添加linebreak

sri*_*ini 21 html javascript

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

  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;
Run Code Online (Sandbox Code Playgroud)

如果我做"警报(ebody);" 我在firstname和lastname之间获得了换行符,但是当它打开outlook时,整个ebody字符串在电子邮件正文中没有换行符.

我也试过了.有没有什么东西可以成为一个换行符?

提前致谢

ott*_*ter 43

RFC 2368说mailto正文内容必须是URL编码的,使用%-escaped表单来表示通常在URL中编码的字符.这些字符包括空格和(如2368第5节中明确指出的)CR和LF.

你可以通过写作来做到这一点

ebody = 'First%20Name:%20' + firstname + '%0D%0A' + 'Last%20Name:%20' + lastname;
Run Code Online (Sandbox Code Playgroud)

但是让JavaScript为你逃避会更容易也更好,就像这样:

ebody = 'First Name: ' + firstname + '\r\n' + 'Last Name: ' + lastname;
ebody = encodeURIComponent(ebody);
Run Code Online (Sandbox Code Playgroud)

这不仅可以使你不必识别和查找需要在固定文本中编码的字符的十六进制值,它还将编码firstnamelastname变量中的任何傻瓜字符.


AKZ*_*Zap 7

你可以使用编码 %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;
Run Code Online (Sandbox Code Playgroud)

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