mailto vincular varias líneas corporales


120

tener problemas para que varias líneas funcionen correctamente en un enlace mailto

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

Lo siguiente se coloca en un href de anclaje:

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

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

pensamientos?

Respuestas:


208

Puede utilizar la codificación de URL para codificar la nueva línea como %0A.

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

Si bien lo anterior parece funcionar en muchos casos, el usuario olibre señala que el RFC que rige el esquema de URI mailto especifica que se %0D%0Adebe usar (retorno de carro + salto de línea) en lugar de %0A( salto de línea). Consulte también: Representaciones de nueva línea .


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

Esto debería funcionar para todos los caracteres especiales, ¿verdad? & =% 26,% =% 25, ​​¿hay caracteres en los que este patrón no se cumple?
blast_hardcheese

2
para información, $0Aes simplementeescape( "\n" )
divillysausages

2
Ese codificador usa el estándar encodeURIComponentpara codificar los componentes URI.
Cees Timmerman

1
% 0D% 0A Me funcionó para correo electrónico y compartir en mensaje de
WhatsApp

40
  1. Use un solo bodyparámetro dentro de la mailtocadena
  2. Usar %0D%0Acomo nueva línea

El mailtoesquema URI está especificado por RFC2368 (julio de 1998) y RFC6068 (octubre de 2010).
A continuación se muestra un extracto de la sección 5 de este último RFC:

Los [...] saltos de línea en el cuerpo de un mensaje DEBEN estar codificados con "%0D%0A".
Las implementaciones PUEDEN agregar un salto de línea final al cuerpo de un mensaje incluso si no hay un final "%0D%0A"en el cuerpo [...]

Consulte también en la sección 6 el ejemplo del mismo RFC:

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

El mailtocuerpo anterior corresponde a:

send current-issue
send index

18

Para obtener líneas corporales, use escape ()

body_line =  escape("\n");

entonces

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

1
Prefiero esto personalmente. Principalmente porque esto también funciona cuando intentas agregar un%
Dan James Palmer

5
encodeURIComponent, más bien. Mira aquí.
Cees Timmerman

15

Esto es lo que hago, solo agrego \ny usoencodeURIComponent

Ejemplo

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

emailBody = encodeURIComponent(emailBody);

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

Verifique los documentos de encodeURIComponent


¿ includePara qué usas encodeURIComponent?
frakman1

1
@ frakman1 encodeURIComponent es una función de JavaScript. Puede usarlo sin ningún tipo de inclusión.
kiranvj
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.