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@address.com?&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?

Odpowiedzi:


208

Możesz użyć kodowania URL, aby zakodować znak nowej linii jako %0A.

mailto:email@address.com?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 .


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


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:me@somesite.com?body=" + emailBody;

Sprawdź dokumentację encodeURIComponent


Do czego includeużywasz encodeURIComponent?
frakman 1

1
@ frakman1 encodeURIComponent to funkcja JavaScript. Możesz go używać bez żadnych załączników.
kiranvj
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.