Comment ajouter une ligne d'objet (subject) dans un lien mailto HTML
L'attribut mailto: dans un lien HTML (<a href="mailto:...">) ouvre le client mail par défaut avec le destinataire pré-rempli. On peut ajouter objet (subject), corps (body), CC, CCI (BCC) via des paramètres URL.
Syntaxe de base
<a href="mailto:destinataire@example.com">Envoyer email</a>
Ajouter l'objet (subject)
Ajoutez ?subject=Votre%20Objet après l'email. Encodez les espaces (%20) et caractères spéciaux (URL encoding).
<a href="mailto:destinataire@example.com?subject=Demande%20de%20devis">Demander un devis</a>
Paramètres multiples (subject, body, cc, bcc)
Séparez par & (esperluette).
<a href="mailto:destinataire@example.com?subject=Demande%20de%20devis&body=Bonjour%2C%0D%0AJe%20souhaite%20un%20devis%20pour...&cc=collegue@example.com&bcc=archives@example.com">
Contactez-nous
</a>
Règles d'encodage (IMPORTANT)
- Espace →
%20(ou+dans query string). - Retour à la ligne →
%0D%0A(CRLF) ou%0A(LF). - Caractères spéciaux (&, %, #, ?, =, etc.) → encodage URL (%XX).
- Utilisez
encodeURIComponent()(JavaScript) ou outils en ligne pour générer le href complet.
Exemple complet prêt à l'emploi
<a href="mailto:contact@monsite.com?subject=Inscription%20Newsletter&body=Bonjour%2C%0D%0AJe%20souhaite%20m%27inscrire%20%C3%A0%20la%20newsletter.%0D%0AMerci%21">
S'inscrire à la newsletter
</a>
Générateur rapide (JavaScript)
function mailtoLink(email, subject, body, cc, bcc) {
const params = new URLSearchParams();
if (subject) params.set('subject', subject);
if (body) params.set('body', body);
if (cc) params.set('cc', cc);
if (bcc) params.set('bcc', bcc);
return `mailto:${email}?${params.toString()}`;
}
// Usage
const href = mailtoLink('contact@ex.com', 'Devis', 'Bonjour,\nJe veux un devis.', 'cc@ex.com', 'bcc@ex.com');
// href = "mailto:contact@ex.com?subject=Devis&body=Bonjour,%0AJe%20veux%20un%20devis.&cc=cc@ex.com&bcc=bcc@ex.com"
Limites & Bonnes pratiques
- Longueur max URL (~2000-2083 chars selon navigateurs/serveurs). Corps long = problème.
- Dépend du client mail par défaut de l'utilisateur (Outlook, Thunderbird, Gmail web, Apple Mail...). Comportement peut varier.
- Ne fonctionne pas si pas de client mail configuré (webmail seul sans handler mailto).
- Alternative robuste : Formulaire HTML POST vers script backend (PHP, Node, Python) qui envoie l'email côté serveur (SMTP). Contrôle total, pas de limite client.
