2012-04-27 13 views
96

kłopoty uzyskiwanie wielu linii pracować poprawnie w mailto łączamailto połączyć wiele linii nadwozia

W moim przypadku mam sprawdzając je za pomocą domyślnego klienta poczty Outlook.

Poniżej umieścić w href kotwicy:

mailto:[email protected]?&subject=test&body=type%20your&body=message%20here

tylko „wiadomość tutaj” pojawia się w treści wiadomości. (czy używam chrome lub IE)

myśli?

Odpowiedz

169

Możesz użyć URL encoding do kodowania nowej linii jako %0A.

mailto:[email protected]?subject=test&body=type%20your%0Amessage%20here

Chociaż powyższe wydaje się działać w wielu przypadkach użytkownik olibre points out że RFC regulujące mailto schemat URI określa, że ​​%0D%0A (powrót karetki + line feed) powinien być stosowany zamiast %0A (wysunięciu wiersza) . Zobacz także: Newline Representations.

+4

Dzięki, to działa dobrze dla mnie i wydaje się o wiele prostsze niż inne rozwiązania poruszające się w Internecie. – bryn

+0

To powinno działać dla wszystkich znaków specjalnych, prawda? & =% 26,% =% 25, ​​czy są jakieś znaki, których wzór nie zawiera? –

+2

dla informacji, '$ 0A' to po prostu' escape ("\ n") ' – divillysausages

15

Aby uzyskać linie nadwozia używać escape()

body_line = escape("\n"); 

tak

href = "mailto:[email protected]?body=hello,"+body_line+"I like this."; 
+1

Preferuję to osobiście. Głównie dlatego, że działa to również, gdy próbujesz dodać% –

+3

'encodeURIComponent', raczej. [Zobacz tutaj.] (Http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent) –

8

To, co robię, po prostu dodaj \n i używać encodeURIComponent

Przykład

var emailBody = "1st line.\n 2nd line \n 3rd line"; 

emailBody = encodeURIComponent(emailBody); 

href = "mailto:[email protected]?body=" + emailBody; 
+0

Co 'include' używasz do' encodeURIComponent'? – frakman1

+0

@ frakman1 encodeURIComponent jest funkcją JavaScript. Możesz go używać bez żadnych dodatków. – kiranvj

26
  1. pomocą pojedynczego body parametr w ciąg mailto
  2. użytkowania %0D%0A jako nowej linii

The mailto URI Scheme określonej przez przez RFC2368 (lipiec 1998) i RFC6068 (październik 2010).
Poniżej znajduje się wyciąg z section 5 tego ostatniego RFC:

[...] podziały wiersza w ciele wiadomości musi być zakodowany "%0D%0A".
Implementacje MOŻE dodać ostatnią linię podziału wiersza do treści wiadomości , nawet jeśli nie ma końca "%0D%0A" w ciele [...]

Zobacz również w section 6 przykład z tego samego RFC:

<mailto:[email protected]?body=send%20current-issue%0D%0Asend%20index> 

Powyższy mailto ciało odpowiada:

send current-issue 
send index