mailto lier plusieurs lignes de corps


120

avoir des difficultés à faire fonctionner correctement plusieurs lignes dans un lien mailto

Dans mon cas, je le teste avec un lecteur de messagerie par défaut Outlook.

Ce qui suit est mis dans une ancre href:

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

seul "message ici" apparaît dans le corps de l'e-mail. (que j'utilise chrome ou IE)

pensées?

Réponses:


208

Vous pouvez utiliser le codage d'URL pour coder la nouvelle ligne en tant que %0A.

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

Bien que ce qui précède semble fonctionner dans de nombreux cas, l'utilisateur olibre souligne que la RFC régissant le schéma d'URI mailto spécifie que %0D%0A(retour chariot + saut de ligne) doit être utilisé à la place de %0A( saut de ligne). Voir aussi: Représentations de nouvelle ligne .


4
Merci, cela a bien fonctionné pour moi et semble beaucoup plus simple que d'autres solutions flottant sur Internet.
bryn le

Cela devrait fonctionner pour tous les caractères spéciaux, non? & =% 26,% =% 25, ​​y a-t-il des caractères où ce modèle ne tient pas?
blast_hardcheese

2
pour info, $0Ac'est tout simplementescape( "\n" )
divillysausages

2
Cet encodeur utilise la norme encodeURIComponentpour encoder les composants URI.
Cees Timmerman

1
% 0D% 0A a travaillé pour moi pour le courrier électronique et le partage d'un message
WhatsApp

40
  1. Utilisez un seul bodyparamètre dans la mailtochaîne
  2. Utiliser %0D%0Acomme nouvelle ligne

Le mailtoschéma URI est spécifié par RFC2368 (juillet 1998) et RFC6068 (octobre 2010).
Voici un extrait de la section 5 de cette dernière RFC:

[...] les sauts de ligne dans le corps d'un message DOIVENT être codés avec "%0D%0A".
Les implémentations PEUVENT ajouter un dernier saut de ligne au corps d'un message même s'il n'y a pas de fin "%0D%0A"dans le corps [...]

Voir aussi dans la section 6 l'exemple du même RFC:

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

Le mailtocorps ci-dessus correspond à:

send current-issue
send index

18

Pour obtenir les lignes du corps, utilisez escape ()

body_line =  escape("\n");

alors

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

1
Je préfère cela personnellement. Principalement parce que cela fonctionne également lorsque vous essayez d'ajouter un%
Dan James Palmer

5
encodeURIComponent, plutôt. Vois ici.
Cees Timmerman

15

C'est ce que je fais, il suffit d'ajouter \net d'utiliserencodeURIComponent

Exemple

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

emailBody = encodeURIComponent(emailBody);

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

Consultez la documentation d' encodeURIComponent


Pour quoi includeutilisez-vous encodeURIComponent?
frakman1

1
@ frakman1 encodeURIComponent est une fonction JavaScript. Vous pouvez l'utiliser sans aucune inclusion.
kiranvj
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.