avoir du mal à faire fonctionner plusieurs lignes correctement dans un lien mailto
Dans mon cas, je le teste avec un lecteur de messagerie Outlook par défaut.
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?
Vous pouvez utiliser encodage d'URL pour encoder la nouvelle ligne comme %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 fait remarquer que la RFC régissant le schéma d'URI mailto spécifie que %0D%0A
(retour à la ligne + saut de ligne) doit être utilisé à la place de %0A
(saut de ligne). Voir aussi: Newline Representations .
body
dans la chaîne mailto
%0D%0A
comme nouvelle ligne Le mailto
URI Scheme est spécifié par RFC2368 (juillet 1998) et RFC6068 (octobre 2010).
Ci-dessous un extrait de 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 mises en œuvre PEUVENT ajouter un saut de ligne final au corps du message même s'il n'y a pas de fin"%0D%0A"
dans le corps [...]
Voir aussi dans section 6 l'exemple de la même RFC:
<mailto:[email protected]?body=send%20current-issue%0D%0Asend%20index>
Le corps mailto
ci-dessus correspond à:
send current-issue
send index
Pour obtenir les lignes du corps, utilisez escape ()
body_line = escape("\n");
alors
href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
C’est ce que je fais, il suffit d’ajouter \n
et utiliser encodeURIComponent
Exemple
var emailBody = "1st line.\n 2nd line \n 3rd line";
emailBody = encodeURIComponent(emailBody);
href = "mailto:[email protected]?body=" + emailBody;
Vérifier encodeURIComponent docs