Le formulaire de contact WordPress n’envoie plus d’e-mails : causes et correction

Mis à jour le Durée : 30 minutes

Réponse courte

Un formulaire WordPress muet envoie presque toujours via la fonction mail() de PHP, sans authentification : les messageries rejettent ces messages ou les placent en spam. La correction consiste à faire partir les e-mails par un serveur SMTP authentifié, avec une adresse d’expéditeur du domaine, puis à tester un envoi et à vérifier SPF et DKIM.

Le visiteur voit « Votre message a bien été envoyé » et pourtant rien n’arrive, ou le formulaire affiche une erreur d’envoi. Le même symptôme touche les e-mails natifs de WordPress : réinitialisation de mot de passe, notification de commande, alerte administrateur. Tous passent par la fonction wp_mail(), qui s’appuie par défaut sur mail() de PHP.

Le serveur web envoie alors le message directement, sans identifiant, depuis une adresse IP que le domaine n’a pas déclarée. Les grandes messageries ne l’acceptent plus volontiers, et certains hébergeurs bloquent ou limitent cet envoi. Le guide sur les e-mails en spam détaille SPF, DKIM et DMARC en général ; celui-ci traite le cas précis du site WordPress.

Distinguer un problème d’envoi d’un problème de réception

Remplissez le formulaire avec une adresse de test sur une autre messagerie (Gmail par exemple). Regardez le dossier spam de la boîte destinataire, puis celui de l’adresse de réception configurée dans le formulaire. Si le message est en spam, le problème est l’authentification. S’il n’arrive nulle part, le site ne l’envoie pas ou le serveur le rejette. Vérifiez aussi que l’adresse destinataire du formulaire n’a pas de faute de frappe et que sa boîte n’est pas pleine.

Corriger l’adresse « From » du formulaire

Une cause très fréquente : l’adresse d’expéditeur du formulaire est celle du visiteur, ou celle d’un autre domaine. Les messageries rejettent un message qui prétend venir d’un domaine dont le serveur n’est pas autorisé à envoyer. Dans les réglages du formulaire (onglet Mail de Contact Form 7, Notifications de WPForms), utilisez une adresse de votre domaine, par exemple [email protected], comme expéditeur. Placez l’adresse du visiteur dans le champ Reply-To, pas dans From.

Installer une extension SMTP et la configurer

Au lieu de mail(), WordPress doit se connecter à un serveur SMTP avec identifiant. Installez une extension SMTP depuis Extensions, Ajouter (plusieurs existent ; choisissez-en une maintenue et dont la dernière mise à jour est récente). Renseignez ensuite :

  • le serveur sortant (SMTP) fourni par votre service de messagerie ou d’envoi ;
  • le port et le chiffrement indiqués par ce service (en général TLS) ;
  • l’identifiant et le mot de passe d’un compte dédié, de préférence un mot de passe d’application ou une clé d’API, plutôt qu’un mot de passe personnel ;
  • l’adresse d’expéditeur du domaine, identique à celle de l’étape précédente.

Envoyer un message de test depuis l’extension

Presque toutes les extensions SMTP proposent un onglet d’envoi de test : saisissez votre adresse, envoyez, et lisez le résultat. Une erreur d’authentification signale un mauvais identifiant ou mot de passe. Une erreur de connexion signale un port bloqué par l’hébergeur : certains bloquent les ports d’envoi sortants courants, et il faut alors passer par un autre port ou un service d’envoi par API. Un envoi de test qui réussit, mais qui n’arrive pas, renvoie à l’étape suivante.

Consulter le journal des envois

Activez le journal des e-mails de l’extension SMTP ou d’une extension de journalisation dédiée : elle enregistre chaque envoi, son statut et l’erreur éventuelle. Vous voyez ainsi si WordPress a bien émis le message ou s’il a été refusé en amont. Côté serveur, le journal de messagerie (souvent /var/log/mail.log sur Debian et Ubuntu) donne le code de réponse du serveur distant. Pour interpréter un refus 5xx, voyez le guide sur l’IP de serveur blacklistée.

Vérifier SPF et DKIM pour le service utilisé

Dès que les envois passent par un service SMTP, le domaine doit l’autoriser. Ajoutez le service dans l’enregistrement SPF du domaine, et publiez la clé DKIM qu’il fournit en TXT. Sans cela, le message part mais atterrit en spam. Après publication, envoyez un message de test et lisez l’original dans Gmail pour constater spf=pass et dkim=pass. N’ajoutez pas un second enregistrement SPF : fusionnez dans l’existant.

Contrôler les extensions et l’hébergeur

Une extension de sécurité ou d’optimisation peut empêcher l’envoi, et un conflit entre deux extensions SMTP ne produit aucune erreur visible. Gardez une seule extension d’envoi active. Vérifiez enfin auprès de l’hébergeur qu’il n’a pas désactivé la fonction mail() ou plafonné le nombre d’envois : la réponse figure dans sa documentation ou chez son support.

Questions fréquentes

Pourquoi Contact Form 7 affiche « envoyé » mais je ne reçois rien ?

Contact Form 7 confirme que PHP a accepté le message, pas que la messagerie l’a livré. Si l’envoi passe par mail() sans authentification, le message est souvent rejeté ou classé en spam sans que le site le sache. Une extension SMTP et un journal des envois permettent de voir ce qui se passe.

Quelle adresse mettre dans le champ From d’un formulaire ?

Une adresse de votre propre domaine, comme [email protected], celle que votre SPF et votre DKIM autorisent. L’adresse du visiteur va dans Reply-To afin de pouvoir lui répondre. Mettre l’adresse du visiteur dans From fait échouer l’authentification chez les grandes messageries.

Faut-il une extension SMTP pour que WordPress envoie des e-mails ?

Ce n’est pas obligatoire, mais c’est la solution la plus fiable. Sans elle, wp_mail() utilise mail() de PHP, dont la distribution dépend de la configuration du serveur. Avec un SMTP authentifié, le message est signé et vient d’une source déclarée dans votre DNS.

Mon hébergeur bloque-t-il les e-mails de mon site ?

C’est possible : certains hébergeurs limitent ou coupent mail() pour lutter contre le spam, ou bloquent les ports SMTP sortants. Le journal des envois ou un test SMTP le révèle. Passer par un service d’envoi accessible en API ou sur un autre port contourne ce blocage sans l’enfreindre.

Les e-mails WordPress partent mais arrivent en spam, que faire ?

Vérifiez que l’adresse From est celle du domaine, puis que SPF et DKIM sont publiés pour le service d’envoi, comme décrit dans ce guide. Lisez l’original d’un message reçu pour voir quel verdict échoue, puis consultez le guide sur les e-mails du domaine classés en spam.

Sources

Voir aussi

Nos garanties

Comment se passe l’intervention