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 protected]?&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?

KevinDeus
fuente

Respuestas:

208

Puede utilizar la codificación de URL 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 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 .

Cyang
fuente
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
olibre
fuente
18

Para obtener líneas corporales, use escape ()

body_line =  escape("\n");

entonces

href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
lokeshjain2008
fuente
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:[email protected]?body=" + emailBody;

Verifique los documentos de encodeURIComponent

kiranvj
fuente
¿ includePara qué usas encodeURIComponent?
frakman1
1
@ frakman1 encodeURIComponent es una función de JavaScript. Puede usarlo sin ningún tipo de inclusión.
kiranvj