FreeToGenerate.com

Encodé selon la spécification, pas selon l'habitude. Rien n'est envoyé.

Le message

Séparez plusieurs destinataires par des virgules.

Votre lien mailto

mailto:sales@example.com?subject=Website%20enquiry&body=Hello,%0D%0A%0D%0AI'd%20like%20a%20quote.%0D%0A%0D%0AThanks

En lien HTML

<a href="mailto:sales@example.com?subject=Website%20enquiry&amp;body=Hello,%0D%0A%0D%0AI'd%20like%20a%20quote.%0D%0A%0D%0AThanks">Ouvrir dans votre logiciel de messagerie</a>

Ce que la méthode habituelle aurait produit

Presque tous les générateurs construisent cela comme on construit n'importe quelle chaîne de requête, avec l'encodage de formulaire. Voici cette version du même lien, pour que vous voyiez la différence au lieu de me croire sur parole.

Correct, selon la RFC 6068

mailto:sales@example.com?subject=Website%20enquiry&body=Hello,%0D%0A%0D%0AI'd%20like%20a%20quote.%0D%0A%0D%0AThanks

Encodé comme un formulaire — ce n'est pas ce que mailto demande

mailto:sales@example.com?subject=Website+enquiry&body=Hello%2C%0A%0AI%27d+like+a+quote.%0A%0AThanks

space×4%20+arrive comme un autre texte
LF×4%0D%0A%0Aarrive comme un autre texte
,×1,%2Carrive à l'identique
'×1'%27arrive à l'identique

Regardez d'abord les espaces. L'encodage de formulaire écrit un signe plus, et la RFC 6068 range le plus parmi les caractères qui peuvent apparaître littéralement : un logiciel de messagerie a donc raison de le lire comme un signe plus et non comme une espace. Les sauts de ligne sont l'autre cas : la spécification impose de les écrire %0D%0A, et l'encodage de formulaire n'émet que %0A. Tout ce qui est marqué comme arrivant à l'identique est simplement écrit plus longuement et ne change rien.

Mesuré sur tous les caractères ASCII

caractères encodés différemment
14
d'entre eux changent le texte
3
simplement écrits plus longuement
11
que encodeURIComponent rate
2

Les 128 caractères ASCII ont été vérifiés, et non un échantillon. L'encodage de formulaire diffère de l'encodage correct sur 14 d'entre eux, ce qui paraît pire que ce ne l'est : 11 des 14 reviennent encodés en pourcentage là où ils auraient pu rester littéraux, ce qui est permis et redonne exactement le même caractère. Trois seulement changent ce que reçoit le lecteur : l'espace et les deux moitiés d'un saut de ligne. Ce sont précisément les caractères présents dans n'importe quel objet et n'importe quel corps réels, et c'est pourquoi cela compte malgré leur petit nombre. encodeURIComponent seul s'en approche beaucoup plus : il diffère sur 8 caractères et seuls les 2 du saut de ligne importent, il est donc correct dès lors que le texte est converti en CRLF au préalable.

Une conséquence qui mérite d'être dite : le signe plus survit intact dans une adresse. Les adresses à plus — vous+boutique@exemple.com — fonctionnent donc dans un lien correctement construit et se cassent dans un lien encodé comme un formulaire, où le plus revient souvent en espace et le courrier repart en erreur.

Construit selon la RFC 6068 et vérifié face aux six adresses que cette spécification associe à leur forme encodée exacte. Rien n'est envoyé : le lien est assemblé dans cet onglet, et aucun message ne part d'ici.

Aussi disponible en : English · Español · Português · العربية

Générateur de lien mailto

Créez un lien mailto avec objet et message qui arrive intact, et voyez ce que la façon habituelle de le construire aurait abîmé.

Qu'est-ce qu'un lien mailto ?

Un lien mailto est une URI qui ouvre le logiciel de messagerie du lecteur avec un message déjà commencé. Placé dans un href, un clic lui remet un brouillon rédigé au lieu d'une adresse à recopier. La forme la plus simple se réduit à une adresse, et tout ce qui suit le point d'interrogation — objet, corps, cc, cci — relève de champs facultatifs.

Il n'envoie rien par lui-même. Le lien se contente d'ouvrir un brouillon dans le logiciel de messagerie défini par défaut, et la personne doit encore cliquer sur envoyer. Cela vaut la peine de le savoir avant de construire quoi que ce soit autour, car le contenu reste entièrement visible et entièrement modifiable par celui qui clique.

Ce générateur construit le lien, l'affiche en texte brut et en balise HTML, et vous laisse l'ouvrir pour vérifier ce que votre propre logiciel en fait. Il montre aussi à quoi ressemble ce même lien construit comme presque tout le monde le construit, et c'est là que ça devient intéressant.

Comment l'utiliser

  1. Indiquez le destinataire. Une adresse, ou plusieurs séparées par des virgules. Cc et Cci fonctionnent de la même façon et restent facultatifs ; l'outil signale que la spécification ne les traite pas comme l'objet et le corps.
  2. Rédigez l'objet et le message. Tels que vous voulez les voir apparaître, sauts de ligne compris : l'encodage est pris en charge. Le lien se reconstruit à mesure que vous tapez.
  3. Copiez le lien, ou ouvrez-le pour le tester. Copier vous donne l'URI à mettre dans un href ; le bouton d'ouverture la transmet à votre logiciel de messagerie par défaut, pour vérifier qu'elle arrive comme prévu.

Pourquoi presque tous les liens mailto sont mal encodés

Un lien mailto se termine par quelque chose qui ressemble exactement à une chaîne de requête, alors on le construit comme telle : avec l'encodage de formulaire, les règles mêmes qu'un navigateur applique en soumettant un formulaire. C'est là l'erreur, et elle est quasi universelle parce que rien n'échoue jamais visiblement.

La RFC 6068 définit ce qui peut figurer dans un de ces champs, et l'espace n'est pas dans la liste. Le signe plus, lui, y est — en tant que signe plus littéral. Quand l'encodage de formulaire transforme votre espace en plus, il n'écrit donc pas une abréviation que le logiciel de messagerie va défaire : il écrit un caractère qui se signifie lui-même, et un client correct affichera un objet indiquant Demande+de+devis.

Les sauts de ligne sont le second cas : la spécification impose d'écrire un saut dans le corps sous la forme %0D%0A, et l'encodage de formulaire n'en produit que la seconde moitié.

Vérifié sur les 128 caractères ASCII et non sur un échantillon, l'encodage de formulaire diffère de l'encodage correct sur 14 d'entre eux. Ce chiffre exagère le problème, il vaut donc mieux le décomposer : 11 des 14 sont des caractères écrits plus longuement que nécessaire, ce qui est permis et arrive à l'identique — l'apostrophe d'un mot comme aujourd'hui en fait partie. Trois seulement changent ce que reçoit votre correspondant, et ces trois-là sont l'espace et les deux moitiés d'un saut de ligne. Peu de caractères, et précisément ceux qui figurent dans n'importe quel objet et n'importe quel message réels.

Il en existe une version pratique qui coûte du courrier pour de bon. Le signe plus est valide dans une adresse, et les adresses à plus — vous+boutique@exemple.com, l'astuce pour filtrer — sont courantes. Construisez le lien correctement et le plus survit intact. Construisez-le avec l'encodage de formulaire et le plus revient volontiers en espace, ce qui n'est pas une adresse valide, et le message repart en erreur.

Limites assumées

La spécification se montre prudente sur les champs qu'un logiciel de messagerie devrait honorer, et elle est plus restrictive que l'usage. Sa section 4 ne cite que Subject, Keywords et Body comme sûrs et utiles en général, et précise qu'un client peut composer le message à partir d'une partie seulement des champs reçus. Cc et Cci sont honorés par tout logiciel sérieux, cet outil les propose donc — mais ils constituent une demande et non une garantie, et un champ comme From, attendez-vous à le voir ignoré, voire à ce qu'il fasse refuser le message entier.

Les sauts de ligne ont leur place dans le corps et nulle part ailleurs. La spécification déconseille de les employer dans les autres champs : un saut dans l'objet est donc signalé ici plutôt qu'encodé en silence, et la plupart des logiciels le supprimeront ou l'abîmeront.

L'allure finale du brouillon ne dépend pas entièrement de vous non plus. Certains clients tronquent les corps longs, quelques-uns retirent la mise en forme, et un webmail défini comme gestionnaire système se comporte autrement qu'un logiciel de bureau. Testez le lien dans le logiciel que votre public utilise réellement avant de miser sur un message long, et gardez l'essentiel dans le texte visible de la page plutôt que dans le lien.

Enfin, une adresse inscrite dans une page sous forme de lien mailto reste une adresse inscrite dans une page. Les robots collecteurs d'adresses lisent parfaitement le HTML, et aucun encodage n'y change rien : encoder les caractères en pourcentage est une règle d'écriture, pas une technique de dissimulation, et cet outil ne prétend pas le contraire.

Pourquoi est-ce gratuit ?

Le lien est assemblé dans votre navigateur. Encoder une chaîne de caractères n'est pas un travail qui réclame un serveur : il n'y a donc rien à faire tourner, rien à facturer et aucun compte à créer.

Rien de ce que vous saisissez n'est envoyé, conservé ni journalisé, et aucun message ne part de cette page : elle ne produit que du texte à coller. Les adresses et les brouillons sont exactement ce qui n'a pas à voyager jusqu'au serveur d'un tiers pour être mis en forme.