mailto link multiple body lines
Solution 1:
You can use URL encoding to encode the newline as %0A
.
mailto:[email protected]?subject=test&body=type%20your%0Amessage%20here
While the above appears to work in many cases, user olibre points out that the RFC governing the mailto URI scheme specifies that %0D%0A
(carriage return + line feed) should be used instead of %0A
(line feed). See also: Newline Representations.
Solution 2:
-
Use a single
body
parameter within themailto
string - Use
%0D%0A
as newline
The mailto
URI Scheme is specified by by RFC2368 (July 1998) and RFC6068 (October 2010).
Below is an extract of section 5 of this last RFC:
[...] line breaks in the body of a message MUST be encoded with
"%0D%0A"
.
Implementations MAY add a final line break to the body of a message even if there is no trailing"%0D%0A"
in the body [...]
See also in section 6 the example from the same RFC:
<mailto:[email protected]?body=send%20current-issue%0D%0Asend%20index>
The above mailto
body corresponds to:
send current-issue
send index
Solution 3:
To get body lines use escape()
body_line = escape("\n");
so
href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
Solution 4:
This is what I do, just add \n
and use encodeURIComponent
Example
var emailBody = "1st line.\n 2nd line \n 3rd line";
emailBody = encodeURIComponent(emailBody);
href = "mailto:[email protected]?body=" + emailBody;
Check encodeURIComponent docs