Le formulaire affiche “Envoyé” — et pourtant, rien n’arrive
C’est le bug silencieux par excellence : le visiteur clique sur “Envoyer”, le message de confirmation vert s’affiche, et de votre côté… boîte vide. Pas de notification, pas de lead, potentiellement des semaines de formulaires perdus sans que personne ne s’en aperçoive.
Contact Form 7 (CF7) délègue l’envoi des emails à la fonction PHP mail() native du serveur. Cette fonction est datée, capricieuse, et de plus en plus bloquée par les hébergeurs modernes pour des raisons de sécurité. Résultat : CF7 considère l’email comme “envoyé” dès que PHP l’accepte — pas dès qu’il arrive dans votre boîte. La distinction est cruciale.
Bonne nouvelle : le problème est presque toujours identifiable et réglable en moins d’une heure.
Pourquoi ça arrive : les 5 causes classiques
mail()bloquée par l’hébergeur : OVH, Hostinger, WP Engine, Kinsta et la plupart des hébergeurs modernes désactivent ou bridaientmail()pour limiter le spam. CF7 tente d’envoyer, PHP acquiesce, mais l’email ne quitte jamais le serveur.- Adresse
Fromincorrecte ou non autorisée : CF7 utilise par défautwordpress@votredomaine.com. Si ce domaine ne correspond pas à l’hébergeur qui émet l’email, les serveurs destinataires rejettent ou spamment le message. - Pas d’enregistrements SPF / DKIM / DMARC : sans ces enregistrements DNS, Gmail, Outlook et les autres traitent vos emails comme suspects. L’article sur régler SPF, DKIM et DMARC détaille ça en profondeur.
- Email atterri en spam : souvent lié au point précédent. Vérifiez votre dossier spam avant tout diagnostic technique — c’est la vérification en 10 secondes qui évite 30 minutes de débogage.
- Mauvaise configuration du champ “To” : une balise de champ dynamic mal saisie (
[your-email]au lieu du vrai champ) envoie les notifications… nulle part.
Solution 1 — Vérifier le spam et tester l’envoi brut
Avant de toucher quoi que ce soit : ouvrez votre dossier spam. Si l’email est là, vous avez déjà la moitié du diagnostic.
Ensuite, installez CF7 Mail Check ou Check Email (plugins gratuits). Ces outils envoient un email de test via la même chaîne que CF7 et confirment si le problème vient de mail() ou d’autre chose. Si le test échoue avec une erreur explicite, vous avez la confirmation que mail() est bloquée côté hébergeur.
Solution 2 — Vérifier la configuration du formulaire CF7
Allez dans Contact → Formulaires de contact → Modifier sur votre formulaire.
Cliquez sur l’onglet Mail et vérifiez :
- To : doit contenir une vraie adresse email fixe (ex.
contact@votredomaine.com), pas uniquement une balise dynamique comme[your-email]— cette balise doit aller en Reply-To, pas en destinataire principal. - From : utilisez une adresse sur votre propre domaine, ex.
WordPress <noreply@votredomaine.com>. Évitezgmail.com,yahoo.comouhotmail.com— les serveurs les refuseront systématiquement en émission. - Reply-To : c’est ici que vous mettez
[your-email]pour pouvoir répondre directement au visiteur. - Subject : vérifiez qu’il n’est pas vide — certains filtres spam bloquent les sujets vides.
Sauvegardez et faites un test de soumission.
Solution 3 — Installer un plugin SMTP (la vraie solution)
C’est le correctif qui règle 90 % des problèmes. Au lieu de mail(), vous passez par un serveur SMTP authentifié — exactement comme votre client email. Le serveur destinataire reçoit un email traçable, signé, avec une vraie identité d’expéditeur.
Deux plugins fiables et gratuits :
- WP Mail SMTP (le plus populaire, interface claire)
- FluentSMTP (plus léger, recommandé si vous voulez éviter les upsells)
Configurer WP Mail SMTP pas à pas
- Installez et activez WP Mail SMTP depuis Extensions → Ajouter.
- Allez dans WP Mail SMTP → Settings.
- From Email :
noreply@votredomaine.com(ou l’adresse de votre choix sur votre domaine). - From Name : le nom de votre entreprise.
- Mailer : choisissez votre service d’envoi. Les options les plus simples en 2026 :
- Gmail / Google Workspace : si vous avez une adresse pro Google, connectez-la via OAuth.
- Brevo (ex-Sendinblue) : compte gratuit jusqu’à 300 emails/jour, configuration par clé API.
- Resend : excellent pour les développeurs, le guide de configuration est ici.
- SMTP classique : si votre hébergeur fournit un serveur SMTP (OVH, cPanel…), utilisez les identifiants fournis dans votre panel.
- Remplissez les champs SMTP (hôte, port 587 ou 465, identifiants).
- Utilisez Send Test Email pour valider.
Si le test passe, CF7 utilisera automatiquement ce plugin — aucune modification de CF7 n’est nécessaire. WP Mail SMTP intercepte tous les appels WordPress à mail() et les redirige via SMTP.
Pour une configuration SMTP complète sur WordPress, l’article emails WordPress qui n’arrivent pas couvre tous les cas de figure.
Solution 4 — Corriger les enregistrements SPF et DKIM
Même avec un SMTP correctement configuré, vos emails peuvent finir en spam si les enregistrements DNS ne correspondent pas à l’expéditeur. C’est une question de délivrabilité, pas de configuration WordPress.
SPF : enregistrement TXT dans votre zone DNS qui liste les serveurs autorisés à envoyer des emails pour votre domaine.
Exemple pour Brevo :
v=spf1 include:spf.brevo.com ~all
DKIM : signature cryptographique ajoutée à chaque email. Votre service d’envoi (Brevo, Resend, Google…) vous fournit l’enregistrement CNAME ou TXT à ajouter dans votre zone DNS.
Si vous gérez vos DNS sur IONOS, ce guide pas à pas vous montre où ajouter ces enregistrements. Pour un diagnostic complet sur SPF/DKIM/DMARC, consultez l’article dédié à la délivrabilité email pro.
Comptez 15 à 30 minutes pour la propagation DNS avant de retester.
Solution 5 — Utiliser le mail secondaire CF7 pour le double envoi
CF7 propose un onglet Mail 2 dans la configuration du formulaire. Ce deuxième email est envoyé en confirmation à l’expéditeur (le visiteur). Si vos notifications arrivent mais pas les confirmations visiteur (ou inversement), activez et configurez cet onglet séparément.
Assurez-vous que Mail 2 est coché et que le champ To pointe bien vers [your-email] — la balise du champ email de votre formulaire.
Tableau récapitulatif : cause → diagnostic → solution
| Symptôme | Cause probable | Solution |
|---|---|---|
| Aucun email, aucun spam | mail() bloquée par l’hébergeur | Installer WP Mail SMTP + service SMTP |
| Email en spam | SPF/DKIM absents ou incorrects | Ajouter les enregistrements DNS |
From en gmail.com ou yahoo.com | Adresse expéditeur non autorisée | Utiliser une adresse sur votre domaine |
| Notification reçue, confirmation visiteur non | Mail 2 non configuré | Activer et configurer l’onglet Mail 2 |
| Test SMTP réussi, CF7 toujours silencieux | Conflit de plugin | Désactiver les autres plugins email/cache, retester |
| Formulaire affiche erreur rouge | Problème de validation CF7, pas d’envoi | Vérifier les champs requis et les balises |
FAQ
CF7 affiche "Votre message a bien été envoyé" — ça veut dire que l'email est parti ?
Non. Ce message signifie uniquement que WordPress a accepté la demande d’envoi via mail(). Si mail() est bloquée ou si l’email est rejeté en aval, CF7 ne le sait pas et affiche quand même le message de succès. Seul un plugin SMTP avec logs d’envoi vous donne une vraie confirmation de transmission.
Quel service SMTP gratuit recommander pour un petit site PME ?
Brevo (ex-Sendinblue) reste le choix le plus simple : 300 emails/jour en gratuit, interface française, SPF/DKIM préconfigurés. Resend est excellent si vous avez un développeur dans l’équipe. Gmail/Google Workspace fonctionne bien si vous avez déjà une adresse pro Google — attention, les quotas d’envoi sont limités pour un usage non-transactionnel.
Mon hébergeur propose déjà un serveur SMTP. Dois-je quand même installer un plugin ?
Oui. WordPress n’utilise pas le SMTP de votre hébergeur par défaut — il passe toujours par mail(). Un plugin comme WP Mail SMTP est nécessaire pour rediriger les envois vers le SMTP de votre hébergeur, même si ce serveur existe et fonctionne.
Est-ce que le problème peut venir d'un conflit avec un plugin de cache ?
Rarement sur l’envoi lui-même, mais certains plugins de cache peuvent mettre en cache la réponse AJAX de CF7 et afficher un ancien message de succès sans déclencher l’envoi. Désactivez temporairement votre plugin de cache et testez. Si ça résout le problème, ajoutez l’URL d’action du formulaire à la liste des exclusions du cache.
CF7 fonctionne sur un site de staging mais pas en production — pourquoi ?
Les environnements de staging ont souvent une configuration d’envoi différente. Vérifiez que WP Mail SMTP est configuré avec les mêmes identifiants SMTP en production, et que les enregistrements SPF/DKIM pointent vers le bon domaine (celui de production, pas le sous-domaine staging).
Quand passer la main à un pro
Si après avoir installé WP Mail SMTP, configuré un vrai service SMTP et ajouté les enregistrements SPF/DKIM, les emails restent introuvables — le problème dépasse CF7. Ça peut être une liste noire IP du serveur, une configuration DNS complexe à diagnostiquer, ou un conflit profond dans la stack WordPress. À ce stade, une maintenance active avec accès serveur est nécessaire — pas une heure de plus à chercher dans les logs en aveugle.
Des formulaires qui n’envoient rien, c’est des leads perdus. Chaque jour sans correction a un coût réel.
Ce problème, Peechy s'en occupe
Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout — hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.
Confier mon site à Peechy