Les emails Contact Form 7 disparaissent généralement à cause de la façon dont WordPress les envoie, pas à cause du formulaire lui-même. Par défaut, WordPress remet le message à la fonction PHP mail sur votre serveur web, et WP Mail SMTP indique que sans une authentification appropriée ces messages se retrouvent en spam ou disparaissent. Vous trouverez ci-dessous une liste de diagnostic ordonnée de la cause la plus probable à la moins probable, la correction SMTP et les enregistrements DNS qui l'accompagnent, le piège des filtres anti-spam, un moyen de conserver une copie de chaque demande, et comment les formulaires sur les sites headless contournent tout le problème.
Pourquoi les emails Contact Form 7 disparaissent
Contact Form 7 n'envoie pas lui-même d'emails. Il construit le message et le remet à WordPress, qui l'envoie avec wp_mail(). En l'état, selon la fiche WP Mail SMTP, WordPress utilise la fonction PHP mail pour tout ce qui est généré par WordPress ou un plugin de formulaire de contact. Cette fonction envoie le message via le serveur qui héberge votre site. Ce serveur ne peut souvent pas prouver qui envoie vraiment le mail.
Les serveurs de réception vérifient cette preuve. La même fiche indique que Gmail, Yahoo, Office 365 et Zoho vérifient si le mail provient d'un vrai expéditeur, et quand l'authentification n'est pas là, le mail va en spam ou disparaît. Elle affirme aussi que la plupart des sociétés d'hébergement WordPress n'ont pas correctement configuré leurs serveurs pour PHP mail. Traitez cela comme une déclaration du fournisseur, car le fournisseur vend la solution, et comme un motif courant, pas comme un jugement sur un hébergeur en particulier. Beaucoup d'hébergeurs gèrent bien le courrier.
Les preuves du forum pointent dans le même sens. Dans un fil de support de mai 2024, la lecture d'un modérateur était que WordPress envoyait probablement les emails directement sans authentification, et le serveur de courrier l'a reconnu et les a classés en spam. La personne qui avait posé la question avait déjà changé l'adresse From, l'a marquée comme VIP et rédigé une règle de courrier. Toujours du spam. Ça vous dit quelque chose : quand vos propres règles de boîte de réception n'aident pas, le problème se situe en amont de votre boîte de réception.
Un point de données de plus. Contact Form 7 affiche 10+ millions d'installations actives sur sa fiche WordPress.org. La fiche d'un autre plugin indique plus de 5 millions, donc les sources ne s'accordent pas sur le chiffre, mais dans tous les cas il y a une large base d'installations. Cela signifie que la même défaillance est signalée d'une centaine de façons différentes.
Vérifications rapides avant de toucher à autre chose
Passez cinq minutes ici avant de lire un seul enregistrement DNS.
Lisez le message de réponse
La propre FAQ de Contact Form 7 est claire : une bordure rouge signifie que le plugin a essayé d'envoyer avec wp_mail() et a échoué, et vous devez trouver la vraie raison. La même page couvre le cas inverse, un « Merci pour votre message. Il a été envoyé. » en vert où le mail n'arrive jamais. Il y a aussi un détail : le message par défaut « Il y a eu une erreur en essayant d'envoyer votre message. » apparaît à la fois quand l'envoi a échoué pour une raison quelconque et quand une activité de spam a été détectée. Cette phrase seule ne peut pas vous dire quel problème vous avez.
Vérifiez l'onglet Mail
Ouvrez Contact, choisissez le formulaire, puis ouvrez l'onglet Mail. Deux champs importent le plus. L'adresse To doit être une boîte aux lettres que vous lisez vraiment, sans faute de frappe. L'adresse From doit utiliser votre propre domaine. Une adresse From qui utilise l'email du visiteur semble être une contrefaçon pour un serveur de réception, parce que, techniquement, c'en est une. Mettez plutôt l'adresse du visiteur dans un en-tête Reply-To, pour que vous puissiez toujours répondre.
Cherchez dans les spams, puis réfléchissez au timing
Vérifiez le dossier des indésirables de la boîte aux lettres de réception, et toute règle de filtrage qui s'y applique. Si les messages s'y trouvent, vous avez un problème de livrabilité plutôt qu'un problème de livraison. Cela nécessite une correction différente.
La liste de diagnostic, cause la plus probable d'abord
- L'onglet Mail est incorrect. Vérifiez : l'adresse To, l'adresse From, une faute de frappe qui traîne. Correction : utilisez une vraie adresse sur votre domaine dans From, et déplacez l'adresse du visiteur vers Reply-To.
- Le message est en indésirables. Vérifiez : dossier spam, quarantaine, règles de boîte aux lettres partagée. Correction : s'il y est, allez à l'étape 4. Marquer les expéditeurs comme sûrs tient rarement pour les mails non authentifiés.
- Le formulaire affiche une bordure rouge. Vérifiez : le message de réponse et l'entrée de la FAQ de Contact Form 7 à ce sujet. Correction : cela signifie que
wp_mail()a échoué, donc le problème se situe avec la configuration du courrier du site. Allez à l'étape 4. - WordPress envoie par PHP mail sans authentification. Vérifiez : utilisez-vous un plugin SMTP ou un service de courrier ? Correction : installez-en un et envoyez un email de test (section suivante).
- Les enregistrements DNS sont manquants ou incorrects. Vérifiez : SPF, DKIM et DMARC sur le domaine d'envoi. Correction : ajoutez les enregistrements que votre fournisseur de courrier vous donne.
- Un filtre anti-spam rejette les vrais messages. Vérifiez : désactivez temporairement le captcha ou l'intégration Akismet et renvoyez. Correction : ajustez l'intégration, ne laissez pas le formulaire sans protection.
- Quelque chose d'autre sur le site interfère. Vérifiez : passez à un thème par défaut, désactivez les autres plugins, videz les caches. Correctif : réactivez un à la fois jusqu'à ce que ça casse à nouveau.
- Une mise à jour récente a changé quelque chose. Vérifiez : votre version de PHP par rapport à la condition requise indiquée par le plugin. Correctif : voir la FAQ ci-dessous.
La plupart des gens s'arrêtent à l'étape 4. C'est généralement correct. La liste de contrôle est ordonnée pour une raison : n'achetez pas un service de messagerie pour corriger une faute de frappe.
Le correctif fiable : authentification de l'envoi et enregistrements DNS
La réparation fiable consiste à arrêter d'utiliser la messagerie PHP non authentifiée. Envoyez via SMTP, ou via un service de messagerie transactionnelle, un service conçu pour l'envoi automatisé de messages comme les notifications de formulaire, en utilisant un plugin tel que WP Mail SMTP. Selon sa description, le plugin reconfigure wp_mail() pour utiliser les identifiants d'hôte SMTP ou un fournisseur de messagerie. Avec les intégrations de fournisseur qu'il recommande, la messagerie passe par l'API directe du fournisseur, que la description indique fonctionne même quand votre hébergeur web bloque les ports SMTP.

Quelques remarques honnêtes sur le plugin :
- Choix du service de messagerie. La description marque SendLayer, SMTP.com et Brevo comme recommandés. Configuration en un clic Microsoft, Amazon SES et Zoho Mail sont marqués Pro. Gmail SMTP, Mailgun, SendGrid, Postmark et autres figurent dans la liste gratuite.
- Limites gratuites. La description cite 300 emails gratuits par jour pour Brevo et jusqu'à 100 par jour pour SendGrid. Ce sont des chiffres que le fournisseur du plugin indique, alors vérifiez la page propre de chaque fournisseur avant de vous y fier. Un formulaire de contact sur un petit site envoie quelques messages, les limites mordent rarement, mais vous devriez savoir où elles se trouvent.
- Conflit d'intérêts. Il est possédé et maintenu par l'équipe derrière WPForms, un constructeur de formulaires concurrent. Cela n'empêche pas son fonctionnement avec Contact Form 7, et c'est de quoi parle l'article propre du fournisseur sur Contact Form 7. D'autres plugins SMTP existent si vous préférez ne pas l'utiliser.
- La journalisation est payante. La journalisation des emails, le renvoi, les alertes et une connexion de secours sont répertoriés comme des fonctionnalités Pro, un plugin payant distinct. La version gratuite envoie. Elle ne conserve pas de dossier.
La configuration est simple. Choisissez un service de messagerie, définissez l'adresse De sur une adresse d'un domaine que vous contrôlez, envoyez le email de test depuis le plugin, puis soumettez votre vrai formulaire. Le plugin effectue également une vérification de domaine : quand vous envoyez un email de test et à la fin de l'Assistant de configuration, il envoie l'adresse De, le service de messagerie et le domaine d'envoi pour vérifier les enregistrements DNS du domaine, et Outils > Santé du site affiche le dernier résultat. Sachez que si vous tenez à savoir où vos données vont.
SPF, DKIM et DMARC en termes simples
Ce sont trois enregistrements DNS, et c'est ce qui transforme « envoyé » en « fiable ».
- SPF liste les serveurs autorisés à envoyer du courrier pour votre domaine.
- DKIM ajoute une signature à chaque message, vérifiée par rapport à une clé publique que vous publiez dans DNS.
- DMARC indique aux serveurs de réception quoi faire quand ces vérifications échouent, et où envoyer les rapports.
L'écran de configuration de votre fournisseur de messagerie vous donne les enregistrements exacts à coller, donc je n'en inventerai pas ici. Un point pratique : si votre domaine a déjà un enregistrement SPF, modifiez-le plutôt que d'en ajouter un deuxième. Le DNS se trouve là où vos serveurs de noms de domaine pointent, ce qui pourrait être votre registraire, votre hébergeur ou un service comme Cloudflare. Pas sûr ? Regardez d'abord les serveurs de noms. Cela économise beaucoup d'édition dans le mauvais tableau de bord.
Filtres anti-spam et faux positifs
Contact Form 7 peut être associé à une protection contre le spam telle que reCAPTCHA et Akismet. C'est judicieux, réellement, un formulaire public sans protection attire rapidement les spam. Mais n'importe quel filtre qui évalue les soumissions peut évaluer une véritable soumission incorrectement, et alors votre demande est silencieusement supprimée. Rappelez-vous du point FAQ d'avant : la même erreur à l'écran couvre à la fois l'échec de la messagerie et la détection de spam.
Le test est simple. Désactivez l'intégration un moment, soumettez un message réaliste depuis un appareil différent, et voyez s'il arrive. S'il arrive, le filtre était le problème. Relâchez-le, ne le supprimez pas.
Voici les endroits où un message légitime peut être supprimé :
- Le captcha évalue le visiteur comme un bot, et le formulaire le refuse
- Akismet marque le message comme spam avant qu'il n'atteigne l'étape de messagerie
- Un plugin de mise en cache ou d'optimisation casse le script dont le formulaire a besoin
- La boîte de réception la filtre après livraison
Parfois, ce n'est rien de tout cela. Un fil de forum décrit l'erreur « Impossible d'envoyer votre message. Réessayez plus tard ou contactez l'administrateur par un autre moyen. » avec un statut AJAX de 200 et reCAPTCHA v3 fonctionnant. L'auteur du plugin, Takayuki Miyoshi, a demandé le thème et les plugins, suggéré de passer au thème par défaut, de désactiver les autres plugins et de vider les caches, et noté qu'un échec enregistré avec SMTP activé ou désactivé suggère que SMTP est peu probable d'être la cause. Conseil ennuyeux. Souvent le bon conseil.
Conservez une copie de chaque envoi
La plupart des propriétaires l'apprennent trop tard : l'e-mail est une notification, pas un dossier. Si le courrier échoue, la demande disparaît, et le visiteur a vu un message poli « envoyé ». Vous ne le saurez jamais.
La solution consiste à enregistrer aussi chaque soumission dans la base de données. De nombreuses extensions complémentaires de Contact Form 7 le font. Par exemple, l'extension Contact Form to Any API permet d'enregistrer les soumissions de Contact Form 7 dans la base de données, avec export en CSV, Excel, PDF et impression. Elle peut aussi envoyer les soumissions vers des API distantes, un CRM par exemple, par POST ou GET, avec jusqu'à 5 connexions API. Sa version 3.0.6, datée du 8 juillet 2026, a ajouté des notifications par e-mail en cas d'échec d'une requête API, ainsi qu'un nettoyage automatique des journaux, réglé par défaut sur 90 jours.
Ce dernier détail est un rappel utile. Les demandes stockées sont des données personnelles, décidez donc combien de temps vous les conservez. Une entrée sauvegardée n'est utile que si quelqu'un ouvre la liste de temps en temps, mettez donc un contrôle récurrent dans le calendrier. Le journal WP Mail SMTP Pro payant mentionné précédemment enregistre les e-mails envoyés, ce qui est pratique, mais ce n'est pas la même chose que de stocker ce que le visiteur a soumis.
Comment les sites statiques et headless gèrent les formulaires
Un site statique ou headless n'a pas de PHP et pas de wp_mail(). Le formulaire envoie ailleurs : un point de terminaison géré par un service de formulaire comme Formspree, la gestion native des formulaires d'une plateforme d'hébergement, ou une fonction serverless que vous écrivez. L'envoi est d'abord stocké. L'e-mail devient une notification parmi plusieurs, pas la seule copie.
Netlify Forms en est un exemple clair. Après l'activation de la détection de formulaires, l'ajout de data-netlify="true" ou d'un attribut netlify à un formulaire HTML vous permet de recevoir les envois dans le panneau d'administration du site Netlify, sans appel API supplémentaire ni JavaScript. Quelques détails des documents :
- L'envoi par AJAX nécessite un corps codé en URL. Netlify Forms ne prend pas en charge les données de formulaire JSON pour l'instant.
- Les téléchargements de fichiers autorisent un fichier par champ, un maximum de 8 Mo par demande de formulaire, et un délai d'expiration de 30 secondes.
- Si votre formulaire est rendu par JavaScript ou un framework serveur comme Next.js, vous devez inclure un formulaire HTML qui répond aux critères Netlify, car la construction trouve les formulaires en analysant le HTML du site.
Les notifications sont séparées du stockage. Selon la documentation des notifications, elles peuvent aller à un e-mail, des webhooks ou un espace de travail Slack, pour un formulaire ou tous les formulaires. Par défaut, les e-mails proviennent de formresponses@netlify.com, et les réponses vont à cette adresse sauf si vous ajoutez une entrée nommée email, qui définit la valeur Reply-to. Même leçon qu'avant : même ici, un e-mail de notification a des particularités que vous voudriez tester.
Si vous décidez si une configuration de formulaire comme celle-ci convient à votre site, le conseiller de pile WordPress est un moyen rapide de voir où se situe votre construction actuelle.
Quand rester sur WordPress est la bonne décision
Pour la plupart des petits sites commerciaux, rester en place est acceptable. Un formulaire de contact est une petite fonctionnalité. Si vous ajoutez l'envoi authentifié, les enregistrements DNS corrects et une copie stockée de chaque entrée, les formulaires WordPress sont aussi fiables que ceux de n'importe qui d'autre. Déplacer les plates-formes pour corriger un problème de courrier, c'est comme remplacer la voiture parce que l'ampoule de témoin s'est éteinte. Si vous êtes curieux de la question plus large, il y a un article sur le départ de WordPress et un résumé des alternatives, mais ni l'un ni l'autre n'est une raison de vous presser.
FAQ
Mon e-mail de test SMTP fonctionne mais le formulaire n'envoie toujours pas. Pourquoi ?
Cela signifie que le courrier quitte votre site correctement, donc la faute est quelque part entre le formulaire et wp_mail(). Les utilisateurs du forum signalent exactement cela. L'un a dit que l'e-mail de test SMTP était correct mais aucun formulaire n'a été envoyé, et la suppression du captcha n'a pas aidé. Un autre a signalé que, après l'acheminement du courrier via WP Mail SMTP, d'autres e-mails fonctionnaient mais Contact Form 7 n'a pas livré sur trois formulaires, et la première question de l'auteur du plugin était où se trouvait le formulaire sur le site, voir le fil de mai 2026. Suivez les étapes d'isolement : thème par défaut, autres plugins désactivés, caches vidés.
Ai-je besoin de WP Mail SMTP Pro ?
Non, pas pour corriger la livraison. Le plugin gratuit effectue l'envoi. Pro est un plugin payant distinct qui ajoute la journalisation des e-mails, le renvoi, les alertes et une connexion de secours. Cela vaut la peine de considérer si vous voulez un enregistrement des échecs, mais un module complémentaire de base de données pour les envois couvre aussi le risque de piste perdue.
Mes formulaires se sont arrêtés juste après une mise à jour. Pourrait-ce être PHP ?
C'est possible. La liste des plugins affiche PHP 8.3 ou supérieur comme exigence pour la version 6.2.3. Deux critiques sur la liste disent que le minimum est passé de 7.4 à 8.3 dans la version 6.2, et l'un signale qu'une mise à jour automatique a cassé un site exécutant PHP 8.0. Ce sont des rapports d'utilisateurs, pas une déclaration du responsable. Vérifiez votre version PHP dans votre panneau de contrôle d'hébergement, et faites une sauvegarde avant de mettre à jour quoi que ce soit.
Le fait le plus utile : Contact Form 7 remet le courrier à WordPress, et WordPress par défaut l'envoie sans authentification via le courrier PHP, donc SMTP authentifié plus les enregistrements DNS corrects corrigent le cas habituel. L'avertissement le plus aigu est que l'e-mail seul n'est jamais un dossier, stockez donc aussi chaque envoi. Si la correction ne fonctionne pas, soupçonnez l'environnement du formulaire, pas le serveur de courrier.
