mailto collegare più righe del corpo


120

problemi nel far funzionare correttamente più righe in un collegamento mailto

Nel mio caso lo sto testando con un lettore di posta predefinito di Outlook.

Quanto segue viene inserito in un href di ancoraggio:

mailto:email@address.com?&subject=test&body=type%20your&body=message%20here

solo "messaggio qui" viene visualizzato nel corpo dell'email. (sia che io usi Chrome o IE)

pensieri?

Risposte:


208

Puoi utilizzare la codifica URL per codificare la nuova riga come %0A.

mailto:email@address.com?subject=test&body=type%20your%0Amessage%20here

Mentre quanto sopra sembra funzionare in molti casi, l'utente olibre sottolinea che l'RFC che governa lo schema dell'URI mailto specifica che %0D%0A(ritorno a capo + avanzamento riga) deve essere utilizzato al posto di %0A(avanzamento riga). Vedi anche: Rappresentazioni di nuova riga .


4
Grazie, questo ha funzionato bene per me e sembra molto più semplice di altre soluzioni che circolano su Internet.
bryn

Questo dovrebbe funzionare per tutti i caratteri speciali, giusto? & =% 26,% =% 25, ​​ci sono caratteri in cui questo pattern non è valido?
blast_hardcheese

2
per info, $0Aè semplicementeescape( "\n" )
divillysausages

2
Quel codificatore utilizza lo standard encodeURIComponentper codificare i componenti URI.
Cees Timmerman

1
% 0D% 0A ha funzionato per me per e-mail e condivisione in messaggio whatsapp
BenB

40
  1. Utilizza un singolo bodyparametro all'interno della mailtostringa
  2. Usa %0D%0Acome nuova riga

Lo mailtoschema URI è specificato da RFC2368 (luglio 1998) e RFC6068 (ottobre 2010).
Di seguito è riportato un estratto della sezione 5 di quest'ultima RFC:

[...] le interruzioni di riga nel corpo di un messaggio DEVONO essere codificate con "%0D%0A".
Le implementazioni POSSONO aggiungere un'interruzione di riga finale al corpo di un messaggio anche se non c'è alcun finale "%0D%0A"nel corpo [...]

Vedi anche nella sezione 6 l'esempio della stessa RFC:

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

Il mailtocorpo sopra corrisponde a:

send current-issue
send index

18

Per ottenere le linee del corpo usa escape ()

body_line =  escape("\n");

così

href = "mailto:me@my.com?body=hello,"+body_line+"I like this.";

1
Lo preferisco personalmente. Principalmente perché funziona anche quando provi ad aggiungere una%
Dan James Palmer

5
encodeURIComponent, piuttosto. Vedere qui.
Cees Timmerman

15

Questo è quello che faccio, aggiungo \ne usoencodeURIComponent

Esempio

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

emailBody = encodeURIComponent(emailBody);

href = "mailto:me@somesite.com?body=" + emailBody;

Controlla la documentazione di encodeURIComponent


Per cosa includeusi encodeURIComponent?
frakman1

1
@ frakman1 encodeURIComponent è una funzione JavaScript. Puoi usarlo senza alcuna inclusione.
kiranvj
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.