# 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.

- Source canonique : [https://allaux.fr/wordpress-woocommerce/problemes/formulaire-contact-ne-part-pas](https://allaux.fr/wordpress-woocommerce/problemes/formulaire-contact-ne-part-pas)
- Langue : FR
- Dernière mise à jour : 2026-08-03

## Réponse directe

> La confirmation affichée est produite côté navigateur et ne prouve rien : ouvrez l’onglet Réseau, soumettez le formulaire et lisez le code de réponse renvoyé par le serveur. S’il est correct, le blocage est au transport. Activez alors WP_DEBUG et WP_DEBUG_LOG dans wp-config.php, renvoyez le formulaire, lisez wp-content/debug.log, puis basculez l’envoi sur un relais SMTP authentifié.

## 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.

## SMTP mal réglé, ou JavaScript cassé

> Un relais SMTP mal configuré se corrige au niveau réglage, avec un plugin ou un hook phpmailer_init. Un conflit JavaScript ou une validation qui casse la soumission demande un vrai débogage côté front, pas un simple changement de paramètre.

## Autres sujets liés

- **Développer une extension WooCommerce sur mesure** — Quand un formulaire doit se connecter à un outil métier au-delà d’un simple envoi d’e-mail. ([/wordpress-woocommerce/extension-sur-mesure](/wordpress-woocommerce/extension-sur-mesure))
- **Dépannage urgent** — Un formulaire de devis muet coûte des prospects à chaque jour qui passe. ([/services/depannage-urgent](/services/depannage-urgent))
- **Toutes les interventions WooCommerce** — Les autres pannes et évolutions que je traite sur WooCommerce. ([/wordpress-woocommerce](/wordpress-woocommerce))

## FAQ

### 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).
