Reputation: 12178
having trouble getting multiple lines to work correctly in a mailto link
In my case I'm testing it with an Outlook default mail reader.
The following is put in an anchor href:
mailto:[email protected]?&subject=test&body=type%20your&body=message%20here
only "message here" shows up in the email body. (whether I use chrome or IE)
thoughts?
Upvotes: 139
Views: 123137
Reputation: 34107
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
Upvotes: 18
Reputation: 5694
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.
Upvotes: 244
Reputation: 54551
body
parameter within the mailto
string%0D%0A
as newlineThe 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
Upvotes: 47
Reputation: 1891
To get body lines use escape()
body_line = escape("\n");
so
href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
Upvotes: 20