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

KevinDeus
la source

Réponses:

208

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

mailto:[email protected]?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 .

cyang
la source
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
olibre
la source
18

Pour obtenir les lignes du corps, utilisez escape ()

body_line =  escape("\n");

alors

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

Consultez la documentation d' encodeURIComponent

Kiranvj
la source
Pour quoi includeutilisez-vous encodeURIComponent?
frakman1
1
@ frakman1 encodeURIComponent est une fonction JavaScript. Vous pouvez l'utiliser sans aucune inclusion.
kiranvj