Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Le formulaire de contact affiche « message envoyé » mais rien n’arrive

C’est un problème distinct des e-mails de commande WooCommerce : ici, c’est un formulaire de contact ou de devis (Contact Form 7, WPForms, Gravity Forms…) qui affiche une confirmation d’envoi au visiteur, alors que l’e-mail ne quitte jamais réellement le serveur. La confirmation s’affiche côté navigateur, indépendamment du succès réel de l’envoi côté serveur, ce qui rend le problème plus trompeur qu’un simple e-mail perdu.

Décrire mon problème Discuter sur WhatsApp

Comment je procède

  1. Reproduction et vérification du réseau

    J’envoie un test et je regarde dans les outils réseau du navigateur si la requête Ajax de soumission part réellement vers le serveur, ou si elle est bloquée avant même d’être envoyée.

  2. Contrôle du reCAPTCHA ou hCaptcha

    Je vérifie que la clé de site et la clé secrète correspondent bien, et qu’il n’y a pas de désaccord entre le domaine configuré chez le fournisseur et le domaine réel du site.

  3. Test de l’envoi côté serveur

    Je teste wp_mail() directement pour savoir si le blocage vient de la fonction d’envoi elle-même, souvent limitée par mail() PHP, ou d’une étape antérieure côté formulaire.

  4. Recherche d’un conflit JavaScript

    Si la requête ne part jamais, je cherche une extension qui casse le gestionnaire de soumission Ajax du formulaire, souvent une autre extension qui charge un script en double ou en conflit.

  5. Mise en place d’un relais SMTP authentifié

    Si le blocage est côté envoi, je configure un relais SMTP authentifié via le hook phpmailer_init, plus fiable que la fonction mail() native du serveur.

Ce que je traite régulièrement

  • Le message « votre message a bien été envoyé » s’affiche, mais rien n’arrive jamais dans la boîte mail
  • Le formulaire semble fonctionner, mais aucune trace de soumission n’apparaît nulle part
  • Le bouton d’envoi reste bloqué ou ne réagit pas du tout au clic
  • Le formulaire fonctionnait bien, puis a cessé d’envoyer sans qu’aucun réglage n’ait changé
  • Certains messages arrivent, d’autres non, sans logique apparente

Pourquoi la confirmation ment parfois

Un formulaire de contact repose sur la même fragilité que les e-mails transactionnels : wp_mail() s’appuie par défaut sur la fonction mail() de PHP, souvent mal considérée par les serveurs de réception. Mais ici, le piège est plus trompeur, car le plugin affiche un message de succès côté client dès que le JavaScript s’exécute, sans attendre de confirmation fiable que l’envoi serveur a réellement abouti.

Une clé reCAPTCHA ou hCaptcha mal configurée, clé de site et clé secrète inversées, ou un désaccord de domaine, peut bloquer silencieusement la soumission elle-même : le visiteur ne voit ni erreur ni blocage apparent. Un conflit JavaScript provoqué par une autre extension peut aussi casser le gestionnaire de soumission Ajax du formulaire, qui semble « marcher » sans jamais rien envoyer au serveur.

Autres sujets liés

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

Que doit faire l’extension ?
Où doit-elle s’intégrer ?
Avez-vous déjà essayé une extension du marché ? (facultatif)

Savoir ce qui a échoué évite de reproduire la même limite.

Pour quand ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Questions fréquentes

Comment savoir si le problème vient de mon serveur mail ou du formulaire lui-même ?
En testant wp_mail() indépendamment du formulaire. Si l’envoi direct échoue aussi, le problème est côté serveur ou SMTP. S’il fonctionne, le blocage se situe avant, dans le formulaire ou son JavaScript.
Le reCAPTCHA peut-il vraiment bloquer un envoi sans le signaler ?
Oui, une clé mal configurée ou un domaine qui ne correspond pas peut empêcher la soumission silencieusement, sans message d’erreur visible pour le visiteur.
Un plugin SMTP suffit-il à régler ça ?
S’il s’agit d’un problème de délivrabilité (mail() PHP mal considéré), oui, un plugin SMTP avec authentification suffit généralement. S’il s’agit d’un conflit JavaScript, un plugin SMTP ne changera rien.
Pourquoi ça marchait avant et plus maintenant ?
Souvent une mise à jour d’une autre extension a introduit un conflit JavaScript, ou une clé reCAPTCHA a été renouvelée sans mettre à jour les deux côtés (site et fournisseur).