mailto link multiple body lines
HtmlOutlookMailtoHtml Problem Overview
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?
Html Solutions
Solution 1 - Html
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 - Html
- 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 - Html
To get body lines use escape()
body_line = escape("\n");
so
href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
Solution 4 - Html
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