mailto łączy wiele linii treści

120

problemy z poprawnym działaniem wielu wierszy w łączu mailto

W moim przypadku testuję to z domyślnym czytnikiem poczty Outlooka.

W href kotwicy umieszczany jest następujący kod:

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

w treści wiadomości e-mail pojawia się tylko „wiadomość tutaj”. (czy używam Chrome czy IE)

myśli?

KevinDeus
źródło

Odpowiedzi:

208

Możesz użyć kodowania URL, aby zakodować znak 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 zwraca uwagę, że dokument RFC regulujący schemat mailto URI określa, że %0D%0A(powrót karetki + nowy wiersz) powinno być używane zamiast %0A( znak nowego wiersza). Zobacz także: Reprezentacje nowej linii .

cyang
źródło
4
Dzięki, to działało dobrze dla mnie i wydaje się znacznie prostsze niż inne rozwiązania krążące po Internecie.
bryn
To powinno działać dla wszystkich znaków specjalnych, prawda? & =% 26,% =% 25, ​​czy są jakieś znaki, w których ten wzorzec nie jest zgodny?
blast_hardcheese
2
dla informacji $0Ajest po prostuescape( "\n" )
divillysausages
2
Ten koder używa standardu encodeURIComponentdo kodowania składników URI.
Cees Timmerman
1
% 0D% 0A Pracował dla mnie na e-mail i udostępnianie w wiadomości WhatsApp
BenB
40
  1. Użyj pojedynczego bodyparametru w mailtociągu
  2. Użyj %0D%0Ajako nowej linii

mailtoSchemat URI jest określony przez RFC2368 (lipiec 1998) i RFC6068 (październik 2010).
Poniżej znajduje się fragment sekcji 5 tego ostatniego RFC:

[...] podziały wierszy w treści wiadomości MUSZĄ być zakodowane "%0D%0A".
Implementacje MOGĄ dodać ostatni podział wiersza do treści wiadomości, nawet jeśli nie ma "%0D%0A"końca w treści [...]

Zobacz także w sekcji 6 przykład z tego samego RFC:

<mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index>

Powyższe mailtociało odpowiada:

send current-issue
send index
olibre
źródło
18

Aby uzyskać linie ciała, użyj escape ()

body_line =  escape("\n");

więc

href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
lokeshjain2008
źródło
1
Osobiście wolę to. Głównie dlatego, że działa to również, gdy próbujesz dodać%
Dan James Palmer,
5
encodeURIComponentraczej. Spójrz tutaj.
Cees Timmerman
15

To właśnie robię, po prostu dodaję \ni używamencodeURIComponent

Przykład

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

emailBody = encodeURIComponent(emailBody);

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

Sprawdź dokumentację encodeURIComponent

kiranvj
źródło
Do czego includeużywasz encodeURIComponent?
frakman 1
1
@ frakman1 encodeURIComponent to funkcja JavaScript. Możesz go używać bez żadnych załączników.
kiranvj