2012-04-27 24 views
96

tiene problemas para obtener múltiples líneas para trabajar correctamente en un enlace mailtomailto enlazar múltiples líneas de la carrocería

En mi caso, yo estoy probando con un lector de correo predeterminado de Outlook.

La siguiente es poner en un ancla href:

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

único "mensaje aquí" aparece en el cuerpo del correo electrónico. (si uso Chrome o IE)

pensamientos?

Respuesta

169

Puede usar URL encoding para codificar la nueva línea como %0A.

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

Si bien lo anterior parece funcionar en muchos casos, el usuario olibre points out que la RFC que rige la mailto esquema URI especifica que %0D%0A (retorno de carro + avance de línea) se deben utilizar en lugar de %0A (avance de línea) . Vea también: Newline Representations.

+4

Gracias, esto funcionó bien para mí y parece mucho más simple que otras soluciones que flotan en internet. – bryn

+0

Esto debería funcionar para todos los caracteres especiales, ¿verdad? & =% 26,% =% 25, ​​¿hay algún personaje donde este patrón no sea válido? –

+2

para información, '$ 0A' es simplemente' escape ("\ n") ' – divillysausages

15

Para obtener líneas de la carrocería utilizan de escape()

body_line = escape("\n"); 

por lo

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

Prefiero esto personalmente. Principalmente porque esto también funciona cuando intentas agregar un% –

+3

'encodeURIComponent', más bien. [Consulte aquí.] (Http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent) –

8

Esto es lo que hago, simplemente añada \n y uso encodeURIComponent

Ejemplo

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

emailBody = encodeURIComponent(emailBody); 

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

¿Qué 'include' usa para' encodeURIComponent'? – frakman1

+0

@ frakman1 encodeURIComponent es una función de JavaScript. Puedes usarlo sin ningún include. – kiranvj

26
  1. utilizar un único parámetro body dentro de la cadena mailto
  2. Uso %0D%0A como nueva línea

El mailto URI Scheme se especifica mediante por RFC2368 (julio de 1998) y RFC6068 (octubre de 2010).
A continuación se muestra un extracto de section 5 de este último RFC:

[...] saltos de línea en el cuerpo de un mensaje debe ser codificado con "%0D%0A".
Implementaciones PUEDE agregar un salto de línea final al cuerpo de un mensaje incluso si no hay "%0D%0A" en el cuerpo [...]

Ver también en section 6 el ejemplo de la misma RFC:

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

El mailto cuerpo anterior corresponde a:

send current-issue 
send index