Skip to content

Tout pour WordPress, le développement web — et plus encore

🔧 Contact form 7 : configurer la livraison d'emails et corriger les erreurs de soumission

🔧 Contact form 7 : configurer la livraison d'emails et corriger les erreurs de soumission

Comment Contact Form 7 envoie les emails et pourquoi ils n'arrivent pas

Contact Form 7 est utilisé sur plus de 5 millions de sites, ce qui en fait le plugin de formulaire le plus populaire pour WordPress. Configurer un formulaire à trois champs ne prend que quelques minutes, mais quand les emails cessent d'arriver, les ennuis commencent: les propriétaires de sites perdent des prospects, n'ont aucune idée de ce qui a mal tourné et finissent par éplucher les forums.

Le problème ne vient presque jamais du plugin lui-même. CF7 transmet l'email à la fonction wp_mail(), qui le passe à votre serveur. À partir de là, ce qui se passe dépend de votre hébergement, des paramètres PHP, des plugins actifs et d'une douzaine d'autres facteurs. Il suffit d'une API REST désactivée ou d'un champ «From» incorrect pour que le formulaire fonctionne mais qu'aucun email n'arrive.

Nous avons compilé un guide étape par étape pour configurer le modèle d'email de CF7 et analysé toutes les raisons courantes d'échec de délivrabilité, avec des solutions concrètes testées sur des dizaines de sites.

💡 Aperçu rapide:

  • Remplir les champs To, From et Subject dans les paramètres d'email
  • Copier un modèle de corps d'email HTML prêt à l'emploi
  • Vérifier les principales raisons pour lesquelles les emails ne sont pas envoyés
  • Configurer SMTP pour une délivrabilité fiable

Configurer le modèle d'email: étape par étape

Ouvrez votre formulaire dans le panneau d'administration: Contact Form → sélectionnez votre formulaire → onglet «Mail». C'est ici que CF7 assemble l'email à partir de trois parties: les en-têtes, le sujet et le corps. Une erreur dans n'importe quel champ bloque l'envoi, alors passons-les en revue un par un.

To, From et Subject

To est votre adresse email professionnelle où arrivent les soumissions. Par exemple, [email protected] ou une adresse Gmail si vous utilisez un plugin SMTP.

From a une règle clé: le domaine de l'expéditeur doit correspondre au domaine de votre site. La plupart des hébergeurs rejettent les emails où le champ «From» contient [email protected] alors que le site tourne sur mysite.com. Utilisez [email protected]; la boîte aux lettres n'a pas besoin d'exister réellement, ce n'est pas un problème. Le serveur de messagerie vérifie le domaine, pas si l'adresse est réelle.

Subject peut inclure des macros CF7 pour des données dynamiques:

1[_site_title]Form "Contact Form"

[_site_title] insère automatiquement le nom de votre site depuis les paramètres WordPress. Ainsi, vous voyez immédiatement de quel projet provient la soumission.

En-têtes supplémentaires: laissez Reply-to tel quel; CF7 définira automatiquement l'email à partir du champ de formulaire que vous spécifiez dans le corps de l'email.

Corps de l'email: modèle HTML

L'email par défaut de CF7 est en texte brut avec des balises de champ. Il fait peu professionnel et est difficile à lire. Voici le modèle que nous utilisons sur tous nos projets, avec un logo, une mise en page soignée et des liens cliquables pour l'email et le téléphone:

1<img src="https://YOUR_DOMAIN.COM/wp-content/uploads/2024/logo-150x150.png"
2 style="max-width: 150px !important;">
3
4<h3>The user submitted the following information:</h3>
5
6<p><b>Name:</b> [text-59]</p>
7<p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p>
8<p><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p>
9<p><b>Message:</b> [textarea-102]</p>
10
11<p>Message sent from [_site_title] ([_site_url])</p>

Points clés: le logo doit être carré et compact (environ 150 px de côté), sinon il cassera la mise en page dans les clients de messagerie. Les macros entre crochets ([text-59], [Email]) sont les balises de vos champs de formulaire; remplacez-les par vos propres noms depuis l'onglet «Form». Et assurez-vous de cocher la case «Use HTML content type» sous l'éditeur de modèle, sinon les balises HTML arriveront en texte brut.

Case à cocher de type de contenu HTML dans CF7

6 Raisons pour lesquelles les emails ne sont pas envoyés et comment les résoudre

1. Champ «From» incorrect

L'erreur la plus courante: le champ «From» contient l'email du client issu du formulaire, [Email]. Le serveur destinataire voit un email provenant d'un domaine gmail.com envoyé depuis votre hébergement et le bloque pour usurpation d'identité. Solution: «From» doit toujours être une adresse sur le domaine de votre site. Placez l'email du client dans Reply-to via un en-tête supplémentaire:

1Reply-To: [Email]

2. Conflits avec les plugins de sécurité

Des plugins comme Wordfence, iThemes Security (désormais Solid Security) et All-In-One Security peuvent bloquer les requêtes HTTP sortantes de WordPress, y compris l'envoi d'emails. Le diagnostic est simple: désactivez tous les plugins sauf Contact Form 7 et testez le formulaire. S'il fonctionne, réactivez les plugins un par un pour trouver le coupable.

3. L'API REST est désactivée

Contact Form 7 utilise l'API REST de WordPress pour soumettre les formulaires via AJAX. Les plugins d'optimisation, tels que Clearfy Cache (note: en octobre 2025, le projet a été absorbé par Super Page Cache et n'est plus développé séparément; il est conseillé aux utilisateurs actuels de migrer vers Super Page Cache), peuvent désactiver l'API REST pour accélérer le site. Vérifiez les paramètres de votre optimiseur: l'option REST API doit être sur «Off», ce qui signifie que l'API REST est activée et fonctionnelle.

4. L'hébergement bloque la fonction mail()

Sur les hébergements économiques, la fonction PHP mail() est souvent désactivée ou restreinte. Contact Form 7 envoie les emails via celle-ci par défaut. Contactez le support de votre hébergeur et demandez si mail() est autorisée sur votre offre. Si ce n'est pas le cas, passez à SMTP (voir la section ci-dessous); cela résout complètement le problème.

5. Les emails atterrissent en spam

Même si l'email a été envoyé, Gmail ou le service de messagerie de votre hébergeur peut le placer en spam. Les raisons incluent: des enregistrements SPF/DKIM manquants pour le domaine, un en-tête From «suspect», du HTML sans partie texte. Solution: un plugin SMTP qui envoie via un service externe (Gmail API, Mailgun, SendGrid). Ils signent chaque email avec une signature DKIM et utilisent des serveurs SMTP réputés, ce qui rend la délivrabilité proche de 100%.

6. Sensibilité aux versions de PHP et WordPress

CF7 est activement mis à jour (vérifiez la version actuelle sur wordpress.org; à la mi-2026, c'est la branche 6.x, fonctionnant sous PHP 7.4 et supérieur). Si votre hébergement utilise un ancien PHP 5.6, ou à l'inverse, si vous avez activé un PHP 8.4 expérimental sans vérifier la compatibilité, les emails peuvent échouer silencieusement. Restez sur PHP 8.1-8.2; c'est le point d'équilibre idéal.

Configurer SMTP: résoudre le problème de délivrabilité une fois pour toutes

SMTP est un protocole qui transmet l'email non pas via la fonction mail() de votre serveur, mais via un service de messagerie à part entière. WordPress dispose d'une douzaine de plugins qui interceptent wp_mail() et acheminent les emails via un serveur SMTP externe.

Que choisir:

  • Gmail API: gratuit jusqu'à 500 emails par jour via Google Workspace ou un compte Gmail personnel. Avantages: excellente délivrabilité. Inconvénients: vous devez créer un projet dans Google Cloud Console et obtenir des clés OAuth.
  • Brevo (anciennement Sendinblue): 300 emails gratuits par jour, SMTP simple avec identifiant et mot de passe. Pas besoin d'OAuth.
  • Mailgun: 100 emails gratuits par jour, obtenez une clé API et c'est réglé. Pour les développeurs.

Installez n'importe quel plugin SMTP (WP Mail SMTP, Post SMTP, FluentSMTP; tous sont gratuits dans le dépôt WordPress), saisissez les identifiants de votre fournisseur, et vous n'avez plus besoin de la fonction mail(). CF7 continue de fonctionner comme d'habitude, mais les emails passent par un canal fiable.

CSS et polices personnalisées dans les emails CF7

Si vous n'envoyez pas seulement des soumissions de contact mais, par exemple, des confirmations de commande avec de brefs détails produits, il est judicieux de styliser l'email. Le CSS dans l'email fonctionne via des styles en ligne (style=""); les clients de messagerie ignorent les feuilles de style externes. Voici un exemple de modèle stylisé:

1<img src="https://YOUR_DOMAIN.COM/logo.png"
2 style="max-width: 150px !important;">
3
4<h2 style="font-family: Arial, sans-serif; color: #333;">
5 The user selected a product:
6</h2>
7<h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2>
8
9<hr style="border: 1px solid #eee;">
10
11<h3 style="font-family: Arial, sans-serif; color: #555;">
12 The user submitted the following information:
13</h3>
14
15<p style="font-size: 14px;"><b>Name:</b> [text-59]</p>
16<p style="font-size: 14px;"><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p>
17<p style="font-size: 14px;"><b>Email:</b> [Email]</p>
18
19<p style="color: #999; font-size: 12px;">
20 Message sent from <b>[_site_title] ([_site_url])</b>
21</p>

Les mêmes règles s'appliquent: logo carré, case de format HTML cochée, macros remplacées par les vôtres. Les polices personnalisées de Google Fonts ne fonctionnent pas dans les emails; utilisez des piles de polices système (Arial, Helvetica, sans-serif).

⁉️🤔 Foire aux questions

Pourquoi CF7 affiche «Message envoyé» mais il n'y a pas d'email?

CF7 est responsable de la collecte des données et de leur transmission à WordPress, pas de la livraison finale. La réponse «succès» signifie que la requête AJAX s'est terminée sans erreur. L'envoi effectif de l'email se produit en arrière-plan via wp_mail(), et si quelque chose tourne mal à cette étape (hébergement bloquant mail(), adresse From échouant à la validation, email allant en spam), CF7 n'affichera pas d'erreur. C'est pourquoi vous devez toujours tester le formulaire en envoyant vers une vraie boîte aux lettres après la configuration.

Un plugin SMTP est-il obligatoire?

Pas obligatoire, mais fortement recommandé. Sans SMTP, vos emails sont envoyés par la fonction PHP mail(), qui n'authentifie pas l'expéditeur, ne signe pas DKIM et est souvent bloquée par les filtres anti-spam. Un plugin SMTP ajoute l'authentification et améliore considérablement la délivrabilité. En pratique, nous avons vu des dizaines de sites où le formulaire «fonctionnait» mais les emails allaient en spam ou n'arrivaient jamais. Après avoir activé SMTP via Post SMTP ou FluentSMTP, le problème a disparu en 5 minutes.

Que dois-je faire si CF7 a cessé de fonctionner après une mise à jour de WordPress?

D'abord, vérifiez votre version de PHP; CF7 nécessite PHP 7.4 ou supérieur (vérifiez dans la documentation officielle). Ensuite, désactivez les plugins de cache et d'optimisation: ils cassent souvent l'API REST lors de la mise à jour du cœur. Si cela n'aide pas, passez temporairement à un thème WordPress par défaut et testez le formulaire. Dans la plupart des cas, il s'agit d'un conflit avec un plugin de cache ou de sécurité qui ne s'est pas encore adapté à la nouvelle version du cœur.

Comment vérifier si l'API REST fonctionne?

Ouvrez https://your-site.com/wp-json/ dans votre navigateur. Si vous voyez du JSON avec une liste de points de terminaison disponibles, l'API REST est active. Si vous obtenez une erreur 404 ou une page blanche, l'API REST a été désactivée par un plugin d'optimisation ou de sécurité. C'est la méthode de diagnostic la plus rapide: si le point de terminaison renvoie du JSON, CF7 a tout ce dont il a besoin pour fonctionner. Recherchez les paramètres de l'API REST dans des plugins comme Clearfy, Perfmatters, WP-Optimize, ou dans des solutions de sécurité comme Wordfence.

Puis-je envoyer des emails avec des pièces jointes via CF7?

Oui, CF7 prend en charge le téléchargement de fichiers via le champ [file]. Dans les paramètres d'email, dans le champ «Attachments», saisissez la macro de ce champ, et le fichier sera joint à l'email. La plupart des hébergeurs limitent la taille des pièces jointes via upload_max_filesize dans PHP (généralement 2-8 Mo). Pour des téléchargements multiples, utilisez des champs séparés. Si les emails avec pièces jointes ne sont pas envoyés alors que le formulaire fonctionne sans pièces jointes, le problème vient de la limite de taille; réduisez la taille des fichiers ou demandez à votre hébergeur d'augmenter la limite.

Quoi utiliser en 2026: CF7 + SMTP ou des alternatives?

Contact Form 7 reste le meilleur plugin gratuit pour les formulaires WordPress si vous avez besoin de personnalisation et n'avez pas peur de plonger dans les réglages. Mais le problème de délivrabilité des emails est inhérent à l'architecture de WordPress elle-même: la fonction mail() est intrinsèquement peu fiable.

La formule pour 2026 est donc: Contact Form 7 + plugin SMTP. Installez FluentSMTP (gratuit, léger, sans publicité dans l'admin) ou Post SMTP et configurez l'envoi via Gmail API, Brevo ou Mailgun. Ces deux composants ensemble vous offrent: une personnalisation illimitée des formulaires + une délivrabilité de niveau professionnel. Coût: 0 $, temps de configuration: 10 minutes.

Si vous voulez un formulaire qui fonctionne «clé en main» sans aucun tracas, envisagez WPForms ou Ninja Forms. Ils sont payants, mais l'envoi SMTP est intégré par défaut via leurs propres serveurs. Le choix vous appartient: la flexibilité de CF7 ou la simplicité des solutions commerciales.

🔗 Contact Form 7 sur WordPress.org | 🔗 Documentation CF7