Devis gratuit, réponse sous 48 h ouvrées Rendez-vous sur place en Bretagne

Site en panne ? Dépannage WordPress On en parle ? 06 75 19 96 92

wordpressmaintenance

Formulaire de contact WordPress qui ne fonctionne pas : que faire

Formulaire de contact WordPress qui ne fonctionne pas : pourquoi les messages se perdent, comment tester, et les réglages SMTP, SPF, DKIM qui les font arriver.

Un fleuriste consulte ses e-mails sur un ordinateur portable, penché sur le comptoir de sa boutique

Quand un formulaire de contact WordPress ne fonctionne pas, la panne se situe le plus souvent après le clic du visiteur, au moment où le site envoie l’e-mail. Par défaut, WordPress confie ce message au serveur qui l’héberge, sans authentification, et les messageries le refusent ou le rangent dans les indésirables. Pour que les demandes arrivent durablement, il faut envoyer par SMTP authentifié depuis une adresse de votre domaine, publier les enregistrements SPF, DKIM et DMARC, puis tester le formulaire après chaque mise à jour.

Voici comment repérer cette panne, d’où elle vient, comment tester votre formulaire et quels réglages la font disparaître, avec un point sur Contact Form 7. Si vous préférez confier le problème, c’est une intervention courante en dépannage WordPress.

Un formulaire en panne ne prévient personne

Un site en panne se remarque : une page blanche, un message d’erreur, un client qui vous le signale. Un formulaire qui n’envoie plus rien passe inaperçu. Le visiteur remplit les champs, lit un message de remerciement, puis attend une réponse qui ne viendra pas. De votre côté, vous mettez le calme de votre boîte sur le compte de la saison.

La panne se découvre souvent par hasard, quand un client rappelle, agacé, parce que sa demande de devis est restée sans réponse. Entre-temps, des semaines ont pu passer, et ceux qui n’ont pas rappelé sont partis chez un confrère.

Un formulaire en panne ne fait aucun bruit.

Pourquoi un formulaire de contact WordPress ne fonctionne pas : les causes côté e-mail

La fonction mail() de PHP, sans SMTP authentifié

WordPress fonctionne en PHP, le langage qui fait tourner le site sur le serveur. Pour envoyer un e-mail, il utilise par défaut la fonction mail() de PHP : le serveur web expédie le message lui-même, sans passer par une messagerie. Quand WordPress n’envoie pas de mail du tout, c’est souvent que l’hébergeur a désactivé ou limité cette fonction. Ailleurs, le message part d’une machine partagée avec beaucoup d’autres sites, et Gmail, Outlook ou Orange s’en méfient, car c’est ainsi que procèdent de nombreux envoyeurs de spam.

La parade s’appelle SMTP, le protocole que les serveurs de messagerie utilisent pour se transmettre les e-mails. En « SMTP authentifié », le site se connecte à une boîte mail existante avec un identifiant et un mot de passe, puis expédie depuis ce serveur. Sans extension pour le configurer, WordPress ne le fait jamais.

Un nom de domaine sans SPF, DKIM ni DMARC

Ces sigles désignent des enregistrements placés dans la zone DNS de votre domaine, l’annuaire public qui indique où se trouvent votre site et votre messagerie.

  • SPF liste les serveurs autorisés à envoyer des e-mails au nom de votre domaine.
  • DKIM signe chaque message avec une clé publiée dans le DNS, ce qui prouve qu’il vient de chez vous et n’a pas été modifié.
  • DMARC dit aux messageries quoi faire d’un message qui échoue à ces contrôles : l’accepter, le classer en indésirables ou le rejeter. Il vérifie aussi que le domaine affiché comme expéditeur est celui qui a été authentifié.

Gmail et Yahoo exigent depuis 2024 qu’un expéditeur soit au moins authentifié par SPF ou DKIM. Sans ces enregistrements, ou avec un SPF qui oublie le serveur du site, les messages sont refusés ou mis de côté.

Une adresse d’expédition qui n’est pas celle de votre domaine

Le champ « De » (« From ») indique l’expéditeur. Beaucoup de formulaires y placent l’adresse du visiteur, pour pouvoir lui répondre d’un clic. Pour Gmail, un message qui se dit envoyé par une adresse Gmail mais arrive d’un serveur extérieur ressemble à une usurpation, et DMARC le bloque.

Indésirables, boîte pleine, mauvaise adresse

Reste le bout du trajet, souvent négligé :

  • les indésirables : même bien authentifié, un message peut y finir, et ce dossier se vide seul au bout d’un certain temps ;
  • une boîte pleine, qui refuse les nouveaux messages, souvent une adresse fournie avec l’hébergement que personne ne consulte ;
  • une adresse de destination erronée : ancien salarié, ancienne box, ancien prestataire, faute de frappe, ou adresse d’administration de WordPress reprise par défaut.
Une gérante vérifie ses messages à son bureau : sans test régulier, rien ne lui signale que des demandes se perdent en route.
Une gérante vérifie ses messages à son bureau : sans test régulier, rien ne lui signale que des demandes se perdent en route.

Un WordPress qui vous inquiète ? Thomas regarde avec vous.

Quand c’est le formulaire lui-même qui bloque

Ici, le visiteur voit que quelque chose ne va pas : un message d’erreur, un bouton qui tourne dans le vide, un formulaire disparu. Encore faut-il qu’il vous prévienne.

Une extension de formulaire cassée après une mise à jour

WordPress gère les formulaires grâce à une extension : Contact Form 7, WPForms, Gravity Forms ou Fluent Forms, par exemple. Une mise à jour de l’extension, de WordPress ou de PHP peut la rendre incompatible avec le thème ou une autre extension. Le formulaire disparaît, affiche un bout de code entre crochets, ou refuse l’envoi. D’où l’intérêt de sauvegarder et tester avant de mettre à jour WordPress.

Un conflit d’extensions ou de cache

  • Les extensions qui accélèrent le site en regroupant ou en retardant le JavaScript, le code qui fait réagir la page, peuvent bloquer le bouton d’envoi.
  • Le cache de pages sert une copie enregistrée de la page. Si elle contient un jeton de sécurité périmé, le serveur refuse le message.
  • Les extensions de sécurité ferment parfois l’API REST, la porte technique par laquelle Contact Form 7 et d’autres transmettent le formulaire au serveur.
  • Deux extensions d’envoi d’e-mails actives en même temps se disputent le réglage.

Un anti-spam ou un captcha trop strict

Un captcha est un test qui distingue un humain d’un robot. Le plus connu, reCAPTCHA de Google, note chaque visiteur de façon invisible. Mal réglé, il écarte des clients bien réels, par exemple ceux qui refusent les cookies quand l’outil de consentement bloque son script. Protégez-vous des robots, mais vérifiez que les humains passent.

Comment tester votre formulaire de contact vous-même

  1. Envoyez un message depuis un autre appareil, votre téléphone par exemple, avec une adresse personnelle.
  2. Notez ce qu’affiche le formulaire : confirmation, message d’erreur, ou bouton qui tourne dans le vide.
  3. Cherchez le message dans la boîte de destination, indésirables compris, depuis le webmail.
  4. Lisez les en-têtes du message reçu. Dans Gmail, le menu « Afficher l’original » indique si SPF, DKIM et DMARC sont validés (PASS) ou en échec (FAIL).
  5. Activez un journal des e-mails, avec une extension comme WP Mail Logging. Si le message figure au journal mais pas dans votre boîte, il s’est perdu après le serveur. S’il n’y figure pas, le blocage vient du formulaire.
  6. Utilisez l’outil de test d’une extension SMTP : WP Mail SMTP, par exemple, envoie un e-mail d’essai et affiche l’erreur en clair.
Ce que vous constatez Cause probable Première vérification
Le bouton d’envoi tourne sans fin JavaScript, cache, API REST fermée Vider le cache, suspendre l’extension en cause
Un message d’erreur s’affiche Envoi refusé, SMTP mal réglé Outil de test de l’extension SMTP
« Message envoyé », rien n’arrive Refus en aval, mauvaise adresse, boîte pleine Journal des e-mails, adresse de destination
Arrivée dans les indésirables SPF, DKIM, DMARC ou expéditeur hors domaine En-têtes du message reçu
Le formulaire a disparu Extension cassée par une mise à jour Liste des extensions
Certains visiteurs seulement sont bloqués Captcha ou anti-spam trop strict Test sur téléphone, cookies refusés

Les réglages qui font arriver les messages

Envoyer par SMTP grâce à une extension

Une extension SMTP, comme WP Mail SMTP, FluentSMTP ou Post SMTP, remplace la fonction mail() par un envoi authentifié. On la branche :

  • sur la messagerie de votre domaine (hébergeur, Google Workspace, Microsoft 365), ce qui suffit pour un site qui reçoit peu de messages. Les grands fournisseurs demandent de plus en plus une connexion OAuth, c’est-à-dire une autorisation donnée depuis votre compte sans communiquer votre mot de passe ;
  • ou sur un service d’envoi transactionnel, spécialisé dans les e-mails automatiques d’un site, comme Brevo ou Mailjet, qui conserve un historique détaillé des envois.

Publier SPF, DKIM et DMARC dans la zone DNS

Ces enregistrements se créent chez le gestionnaire DNS du domaine, souvent le bureau d’enregistrement ou l’hébergeur. Un domaine ne doit porter qu’un seul enregistrement SPF, qui déclare chaque service envoyant en votre nom : deux enregistrements concurrents le rendent invalide. La clé DKIM se recopie à l’identique. DMARC peut démarrer en mode observation, où les messageries envoient des rapports sans rien bloquer, avant d’être durci.

Avec l’hébergement WordPress que je propose, l’envoi des e-mails du site passe par un service authentifié, et SPF, DKIM et DMARC font partie de la configuration.

Une adresse d’expédition du domaine, une réponse vers le visiteur

Dans l’extension de formulaire, l’expéditeur doit être une adresse de votre domaine, idéalement celle du compte SMTP. Le champ « Répondre à » (Reply-To) reprend l’adresse saisie par le visiteur : votre réponse lui parvient d’un clic.

Garder une copie des messages dans le site

Beaucoup d’extensions de formulaire enregistrent chaque demande dans la base de données du site, parfois dans leur seule version payante. Pour Contact Form 7, il faut une extension compagnon du même auteur, Flamingo. Si l’e-mail se perd, la demande reste consultable dans l’administration. Ce sont des données personnelles : fixez une durée de conservation et mentionnez-la dans votre politique de confidentialité.

Un menuisier consulte son téléphone à l’atelier : une fois l’envoi fiabilisé, les demandes de devis arrivent là où il les attend.
Un menuisier consulte son téléphone à l’atelier : une fois l’envoi fiabilisé, les demandes de devis arrivent là où il les attend.

Contact Form 7 ne fonctionne pas : les réglages à vérifier

Contact Form 7 est gratuit et solide, mais dépouillé : il envoie un e-mail et ne garde rien. Dans l’écran de modification du formulaire, regardez :

  • les avertissements en haut de l’écran, où le validateur de configuration signale par exemple une adresse d’expédition étrangère au domaine du site ;
  • l’onglet E-mail, champ « À » : l’adresse qui reçoit les demandes ;
  • le champ « De » : une adresse de votre domaine, et non la balise [your-email] qui reprend celle du visiteur ;
  • les en-têtes additionnels : la ligne Reply-To: [your-email], présente par défaut, est souvent effacée par erreur.

Un message du type « Une erreur s’est produite lors de l’envoi de votre message » signale en général un échec de l’envoi de l’e-mail : c’est l’extension SMTP qu’il faut régler.

Éviter la prochaine panne : un test chaque mois

Un formulaire en panne ne fait aucun bruit, alors il faut aller vérifier qu’il fonctionne. Je recommande un envoi de test chaque mois, et un autre après chaque mise à jour, changement de messagerie ou modification du DNS. Il prend quelques minutes et évite des semaines de silence.

Dans la maintenance WordPress que je propose, les mises à jour sont appliquées chaque mois sur une copie du site, puis les pages sensibles sont vérifiées, formulaire de contact compris. Pour aller plus loin, voyez pourquoi un site WordPress a besoin d’un plan de maintenance et ce qu’un contrat de maintenance doit contenir.

Questions fréquentes

Pourquoi mon formulaire affiche « message envoyé » alors que je ne reçois rien ?

Parce que ce message confirme seulement que WordPress a remis l’e-mail au serveur. La suite dépend de l’authentification de votre domaine, de l’adresse d’expédition et de l’état de votre boîte. Un journal des e-mails permet de savoir où le message s’est arrêté.

WP Mail SMTP est-il obligatoire ?

Aucune extension précise n’est obligatoire, mais un envoi par SMTP authentifié est devenu presque indispensable. WP Mail SMTP le permet, comme FluentSMTP ou Post SMTP. Certains hébergements WordPress règlent l’envoi authentifié directement sur le serveur.

Pourquoi les messages du formulaire arrivent-ils dans les spams ?

Le plus souvent, parce que le domaine n’a pas d’enregistrements SPF, DKIM et DMARC corrects, ou parce que l’expéditeur affiché n’est pas une adresse de votre domaine. Marquer l’expéditeur comme fiable dans votre messagerie ne règle le problème que pour vous.

Comment savoir si j’ai perdu des demandes ?

Si votre extension enregistre les messages dans la base de données, comparez-les avec votre boîte mail. Sinon, votre service d’envoi ou votre hébergeur garde parfois une trace des envois récents. À défaut, il est difficile de le savoir, d’où l’intérêt de conserver une copie des demandes.

Vous avez un doute sur votre formulaire, ou vous soupçonnez des demandes perdues ? Faire vérifier mon formulaire : je teste l’envoi de bout en bout et je vous dis ce qu’il faut corriger. Devis gratuit et sans engagement, réponse sous 48 h ouvrées.

Thomas, fondateur d’ArWeb

Développeur WordPress et consultant SEO depuis 2010, à Jugon-les-Lacs. Il conçoit, référence et maintient des sites pour des entreprises, associations et communes, en Bretagne et partout en France.

Un échange vaut mieux qu’un article

Une question sur votre site ?

Décrivez votre situation en une phrase : Thomas vous répond personnellement, sans engagement.

Gratuit, sans engagement Réponse de Thomas sous 48 h ouvrées Aucun jargon

Avant de partir

Parlons de votre projet, 10 minutes au téléphone.

Thomas vous rappelle au créneau de votre choix : un premier conseil sur votre site, et un devis gratuit si vous le souhaitez. Sans engagement.

Formulaire protégé par reCAPTCHA : les règles de confidentialité et les conditions d’utilisation de Google s’appliquent.

Vous préférez appeler ? 06 75 19 96 92