Vous pouvez parfois être confronté à un problème d'email sur WordPress. Un formulaire de contact dont vous ne recevez jamais les messages, un plugin dont vous ne recevez plus les notifications, une extension de vente en ligne (WooCommerce, Easy Digital Downloads) pour laquelle les acheteurs ne réceptionnent pas la confirmation de commande ou le lien de téléchargement attendu. Que faire et comment résoudre un problème d'envoi d'emails sur WordPress ?
C'est ce que nous allons voir dans cet article, entièrement remis à jour ! Comment identifier un problème d'emails ? A quoi peut-il être dû ? Quelles solutions pour essayer de récupérer des e-mails qui fonctionnent ? Je vous propose quelques pistes à creuser !
D'où provient le problème d'emails sur WordPress ?
Avant de résoudre un problème d'envoi d'emails sur WordPress, encore faut-il savoir que le problème existe ! Ce qui peut vous alerter ?
- Le fait de ne plus recevoir aucun message depuis votre formulaire de contact alors que vous en recevez habituellement ;
- Des internautes qui affirment vous avoir relancé plusieurs fois alors que vous n'avez rien reçu ;
- Des internautes qui signalent ne pas avoir reçu une confirmation de commande ou un téléchargement ;
- Un message d'erreur lorsque vous essayez de configurer une extension utilisant l'envoi d'emails.
Le jour où ça m'est arrivé, je me suis tout simplement étonnée de ne plus recevoir de messages via mon formulaire de contact, alors que j'en avais régulièrement d'habitude. Au départ, j'ai cru que cette baisse d'activité était en lien avec la période de vacances dans laquelle nous nous trouvions.
Quand elle s'est prolongée, j'ai fini par tester mon formulaire de contact. Il signalait bien les messages comme "envoyés"... mais pourtant, ils n'arrivaient jamais à destination ! C'est une situation typique d'un problème d'emails que vous pouvez rencontrer sur WordPress.
Tester l'envoi d'emails sur WordPress avec Check & Log Email
Pour poser un diagnostic, je vous conseille de commencer par une étape facile : l'installation du plugin "Check & Log Email" de WP Chill. Son rôle est simple : tester si l'envoi d'e-mails depuis votre blog WordPress fonctionne… ou pas ! Ça ne teste pas si le destinataire les reçoit bien… mais simplement s'ils partent bien de votre site, un bon moyen de faire un premier diagnostic.
Il suffit d'installer le plugin et de lancer un test depuis le menu Check & Log Email > Status de WordPress, en indiquant l'adresse e-mail de votre choix pour le test.
S'il n'y a pas de problème d'envoi d'emails via votre site WordPress, vous allez recevoir un mail indiquant :
"This test email proves that your WordPress installation at (adresse du site) can send emails".
Cas #1 - Vous recevez ce message
Si vous recevez ce message mais que vous avez malgré tout un problème d'envoi d'emails sur WordPress, cela laisse entendre que le problème ne vient pas de l'envoi lui-même, mais peut-être plutôt de la configuration : une erreur dans l'adresse e-mail de contact que vous utilisez, un paramètre de votre plugin de formulaire de contact mal renseigné, un envoi qui fait appel à un service tiers non testé par Check & Log Email.
Vérifiez que l'adresse e-mail utilisée par défaut sur votre site est fonctionnelle (menu Réglages > Général, au niveau de la ligne "Adresse e-mail d’administration", ou menu Comptes > Profil, au niveau de la ligne "Adresse de messagerie").
Vous pouvez aussi tester un autre plugin de formulaire de contact (j'utilise Caldera Forms) : cela permet d'écarter un problème de compatibilité.
Cas #2 - Vous ne recevez pas l'email test
Dans ce cas, ça confirme l'existence d'un problème d'envoi d'emails sur WordPress. Vérifiez quand même le dossier Spam de votre boîte mail, au cas où l'envoi aurait atterri au mauvais endroit !
Pour comprendre ce qui se produit, il faut s'intéresser rapidement à ce qui se passe quand un e-mail est envoyé… car le comprendre permet souvent de commencer à résoudre un problème d'envoi d'e-mails.
Quand un visiteur envoie un message depuis votre site WordPress, votre formulaire de contact par exemple, ça mobilise par défaut une fonction baptisée "mail()", écrite en langage PHP. "mail()" est une fonction native de PHP… et comme WordPress utilise aussi le langage PHP, c'est souvent une manière très simple, techniquement, de transmettre un e-mail à son destinataire.
On va simplement chercher l'emplacement où se trouve le destinataire pour lui transmettre le message, mais il n'y a pas d'authentification, de connexion avec mot de passe, de protection…
C'est là que peut survenir le premier problème : certains hébergeurs désactivent la fonction "mail()".
La fonction mail() est-elle désactivée ?
Pourquoi la fonction mail() se retrouverait-elle désactivée ? Il peut s'agir d'une erreur (c'est ce qui m'était arrivé, mon hébergeur web de l'époque avait fait de gros changements d'infrastructure et avait par erreur désactivé la fonction mail sur mon compte).
Il peut aussi s'agir d'une mesure de sécurité. En effet, comme je le mentionnais, la fonction mail est une façon très basique d'envoyer des e-mails, sans aucune sécurité nécessaire.
Et parfois, il y a des abus : si vous avez envoyé beaucoup d'e-mails vers des adresses qui n'existent pas (via votre newsletter par exemple), si vous envoyez de très gros volumes de messages, si votre site a été piraté et est utilisé pour envoyer du spam, votre hébergeur peut décider de suspendre le service mail.
Vous le savez sans doute, il y a aujourd'hui sur le web beaucoup de pratiques frauduleuses utilisant l'e-mail comme moyen de transmettre des virus, d'obtenir des informations confidentielles (phishing)… donc les hébergeurs web prennent des précautions.
Par conséquent, si le plugin Check & Log Email semble indiquer que la fonction mail ne marche pas, commencez par vérifier sur le site de votre hébergeur, via votre compte, que la fonction mail() est toujours active (contactez le support technique de votre hébergeur si vous ne trouvez pas l'information vous-même).
Si elle ne l'est plus, réactivez-la et essayez de comprendre si elle a été désactivée par erreur ou suite à un problème (une liste d'abonnés pas à jour qui provoque beaucoup d'erreurs, un envoi excessif d'e-mails, un site piraté…).
Si la fonction mail() est active et que vous avez malgré tout un problème d'envoi d'emails, je vais vous proposer une autre solution.
Notez que vous pouvez désinstaller le plugin Check & Log Email après utilisation, il n'est pas utile de le conserver sur le long terme.
Le SMTP, une alternative plus sûre pour envoyer des e-mails
Par défaut, les plugins WordPress utilisent souvent la fonction mail mais comme je vous le disais, elle est limitée et surtout, elle n'offre aucune forme de "sécurité" et de contrôle.
Or, aujourd'hui, on cherche à authentifier les échanges, à les sécuriser. C'est un moyen d'éviter que les newsletters ou les emails atterrissent dans le dossier spam du destinataire (voire n'arrivent jamais).
Et pour ce faire, il existe une alternative à la fonction mail : le SMTP ("Simple Mail Transfer Protocol"). Configurer et utiliser le SMTP sur votre site peut vous permettre de résoudre un problème d'envoi d'emails sur WordPress.
En simplifiant, au lieu d'envoyer un e-mail directement, le SMTP implique une connexion à un vrai compte sur un serveur mail… et c'est seulement après cette étape d'authentification que le message est envoyé au destinataire. Ça permet d'améliorer la délivrabilité des e-mails, c'est-à-dire la probabilité qu'ils soient délivrés au destinataire (vous pouvez lire ici d'autres conseils pour augmenter la délivrabilité).
Vous allez me dire : "je ne suis pas technicien informatique, moi, je n'ai aucune idée de la façon d'envoyer des e-mails en SMTP au lieu de la méthode classique".
Eh bien… moi non plus ! Mais il existe des plugins gratuits qui font le travail ! Je vous propose d'utiliser WP Mail SMTP.
Installer WP Mail SMTP pour utiliser le SMTP sur WordPress
L'extension WP Mail SMTP s'installe tout simplement depuis le menu Extensions > Ajouter de WordPress… et ajoute un lien de menu dans Réglages > WP Mail SMTP.
Ce plugin vous permet d'envoyer vos e-mails via un service tiers plus sécurisé que la fonction mail() de base. Le but étant que vos e-mails arrivent à bon port autant que faire se peut.
Quand vous suivez le tutoriel de configuration rapide proposé par le plugin, vous pouvez choisir entre différentes options d'envoi. SMTP.com, Sendinblue, Mailgun, Sendgrid, Gmail et "Autre SMTP" sont accessibles en version gratuite (pour les autres options - Amazon SES, Outlook et Zoho Mail - il faut la version Pro du plugin).
Et pour résoudre un problème d'envoi d'emails sur WordPress, vous pouvez tout simplement utiliser l'une de ces solutions alternatives. Comment choisir ?
Il faut savoir que la plupart des solutions d'envoi d'e-mails sont limitées : certaines sont payantes dès le départ, d'autres le deviennent au-delà d'un certain seuil d'emails envoyés.
Dans ce tutoriel, je vais vous montrer comment configurer le plugin pour utiliser 4 solutions qui me semblent être à la portée de tous :
- Utiliser le SMTP de son hébergeur - Facile et gratuit, les limites d'utilisation sont propres à chaque hébergeur.
- Utiliser Gmail - A priori, le service SMTP de Gmail permet l'envoi de 500 emails par jour en version gratuite et monte beaucoup plus haut si vous vous abonnez à Google Workspace (anciennement Gsuite) pour quelques euros par mois.
- SendGrid - Facile à configurer, le service vous offre 100 emails gratuits par jour.
- Sendinblue - Tout aussi facile, 300 emails gratuits par jour.
Envoyer les e-mails en SMTP via son hébergeur
Vous pouvez d'abord envoyer des e-mails via le SMTP de votre hébergeur, en choisissant "Autre SMTP".
Entrez les paramètres fournis par votre hébergeur web : hébergeur SMTP ("hôte SMTP"), mode d'encryptage (non-sécurisé, sécurisé avec TLS ou SSL), port SMTP, authentification requise (c'est généralement le cas) et login/mot de passe.
D'un hébergeur à l'autre, on vous donne ces informations de manière plus ou moins claire, soit dans un e-mail, soit dans votre interface d'administration.
Ensuite, vous pouvez choisir le nom d'expéditeur à renseigner et l'adresse e-mail par défaut depuis laquelle les e-mails sont envoyés.
L'écran suivant vous propose des options, par défaut "l'amélioration de la délivrabilité des emails" est cochée, tout comme le suivi des erreurs, je vous conseille de laisser en l'état.
Vous pouvez ensuite, de manière facultative, renseigner votre e-mail pour recevoir la newsletter de WP Mail SMTP, ou entrer une clé de licence si vous avez choisi la version pro du plugin. Sinon, cliquez sur "Skip this step" pour passer à l'étape suivante directement.
A la fin du processus, le plugin effectue un test pour vérifier que la configuration est bonne. Vous pouvez également "Envoyer un e-mail de test" en cliquant sur le bouton qui le permet.
S'il y a un problème d'envoi d'emails, vous verrez un message d'erreur, par exemple :
- "Failed to connect to server. Error number 2. "Error notice: stream_socket_client()" ; "Connection refused (111)" : cas typique où vous n'avez pas entré les bonnes informations de configuration.
- Relay access denied : souvent, c'est un problème de mot de passe.
Pour des raisons de sécurité, il est conseillé de ne pas indiquer directement votre mot de passe SMTP dans les réglages du plugin… mais de le faire en modifiant le fichier wp-config.php de WordPress. Par conséquent, avant de configurer le plugin, il est préférable de faire la petite manip qui suit.
Connectez-vous à l'endroit où vous avez stocké les fichiers de WordPress avec un client FTP comme FileZilla. Allez dans le dossier où vous avez installé WordPress et modifiez le fichier intitulé wp-config.php pour y ajouter ces deux lignes :
define( 'WPMS_ON', true );
define( 'WPMS_SMTP_PASS', 'MOTDEPASSE' );
Remplacez MOTDEPASSE par votre mot de passe SMTP, évidemment :) Vous pouvez copiez les deux lignes au début du fichier, entre ces lignes :
En retournant dans les réglages du plugin WP Mail SMTP, vous verrez alors le champ du mot de passe déjà complété et grisé.
Envoyer les e-mails en SMTP avec Gmail
La méthode est plus complexe et concerne les situations où vous voulez utiliser un compte Gmail pour envoyer vos messages, en faisant appel aux serveurs de Google ! Dans la liste des services d'envoi proposés par le plugin WP Mail SMTP, choisissez "Gmail".
L'extension vous affiche tout de suite une mise en garde : l'API Gmail est uniquement adaptée aux sites qui envoient un petit volume d'e-mails. Je trouve aussi, pour ma part, que cette méthode est une vraie usine à gaz :)
Vous devez ensuite vous connecter à votre compte Google et vous rendre sur la page des API Gmail.
Commencez par choisir "Créer un projet" puis "Continuer" :
Passez ensuite à l'étape "Identifiants" :
Sur l'écran, Gmail va vous demander quelques informations. Voici ce qu'il faut répondre :
- Quelle API utilisez-vous ? - Gmail API.
- Quelle plate-forme utilisez-vous pour appeler l'API ? - Serveur Web (exemple : node.js ou Tomcat).
- À quelles données allez-vous accéder ? - Données utilisateur.
Cliquez sur le bouton bleu "De quels identifiants ai-je besoin ?" Gmail vous propose alors de "Configurer l'écran d'autorisation OAuth". Il faut le faire, cet écran ne s'affichera pas aux utilisateurs mais il est nécessaire pour que le plugin fonctionne correctement.
Choisissez donc "Configurer l'écran d'autorisation". Si on vous demande de choisir entre "Utilisateur externe" et "Utilisateur interne", vous n'aurez pas le choix, il faudra choisir "externe" si vous n'êtes pas client Gsuite (sinon, choisissez "interne").
Les seuls champs à renseigner sont :
- Un nom pour l'application (par exemple, "Envoi d'emails WordPress") ;
- Adresse e-mail d'assistance utilisateur (ce sera l'adresse Gmail par défaut) ;
- La partie "Domaine de l'application" : vous pouvez indiquer trois fois l'adresse de la page d'accueil de votre site (pour "Page d'accueil, "Règles de confidentialité" et "Conditions d'utilisation") car personne à part vous ne verra toutes ces informations ;
- La partie "Domaines autorisés" - Renseignez votre nom de domaine (ex : notuxedo.com) ;
- Coordonnées du développeur - Là aussi, laissez votre adresse Gmail ou renseignez une autre adresse de contact pour être informé si nécessaire au sujet de votre projet.
Passez ensuite à l'étape suivante, laissez les "Niveaux d'accès" sans y toucher, idem pour les "utilisateurs tests". Pensez ensuite à "Publier votre application", sans quoi elle ne sera pas utilisable.
Une fois cette étape terminée, allez dans le menu "Identifiants" et cliquez en haut de page sur "Créer des identifiants" puis choisissez "ID client OAuth". C'est cette étape qui va permettre à votre site d'utiliser Gmail pour envoyer des messages.
- Choisissez le type d'application "Application web" ;
- Donnez-lui un nom (ex : Envoi d'emails WordPress) ;
- Dans la partie "Origines JavaScript autorisées", indiquez l'URL de votre site ;
- Pour renseigner la partie "URI de redirection autorisés", retournez sur WordPress. Sur la page de configuration du plugin WP Mail SMTP, vous allez voir une ligne "Authorized redirect URI". Cliquez sur le bouton à sa droite pour copier cette URL… puis collez-la sur le site de Google dans le champ "URI de redirection autorisés".
Cliquez enfin sur "Créer" pour créer le fameux ID client OAuth nécessaire au fonctionnement du SMTP via Gmail. Google vous affiche alors une fenêtre avec un récapitulatif des informations de configuration.
Vous verrez :
- L'ID client (à recopier dans le champ "Client ID" de la configuration du plugin WP Mail SMTP).
- Le code secret client (à recopier dans le champ "Client Secret" de la configuration du plugin).
Une fois que c'est fait, validez les réglages. Il restera une dernière étape : cliquer sur le bouton "Connect to Google" et autoriser WP Mail SMTP à passer par votre compte Gmail pour envoyer des messages. Vous verrez peut-être une mise en garde de sécurité, qui vous obligera à cliquer sur "Paramètres avancés" pour la contourner.
Vous pourrez ensuite envoyer un e-mail test pour vérifier que la connexion a bien été effectuée.
Envoyer les e-mails en SMTP via Sendgrid
Troisième possibilité dont je vais vous parler ici : envoyer les e-mails en SMTP en passant par Sendgrid. Dans la liste des services d'envoi proposés par le plugin WP Mail SMTP, choisissez "Sendgrid".
C'est une solution extrêmement simple. Vous avez juste à créer un compte gratuitement sur Sendgrid (cliquez sur "Start for Free" une fois que vous êtes sur le site de SendGrid). Il vous permet de bénéficier de 100 emails gratuits par jour.
Vous avez juste à renseigner quelques informations basiques (nom, prénom, nom de l'entreprise, URL du site, rôle dans l'entreprise et nombre de salariés).
Une fois connecté, allez dans le menu Settings > API Keys de votre compte.
Cliquez ensuite sur le bouton "Create API Key" pour générer une clé API : c'est un code confidentiel qui permet à Sendgrid de s'assurer que votre plugin WP Mail SMTP est bien autorisé à se connecter à leur service !
Donnez un nom à cette clé API et un accès restreint ("Restricted Access"). En effet, l'important est que votre plugin WordPress puisse utiliser SendGrid pour envoyer des e-mails mais il n'a pas besoin d'accéder à plus de fonctionnalités.
Activez donc simplement l'option "Mail Send".
Vous pouvez ensuite valider. SendGrid vous fournit une clé API : pensez à bien la copier car pour des raisons de sécurité, vous ne la verrez qu'une seule fois ! Copiez-collez la clé dans les réglages du plugin WordPress.
Indiquez également le même nom de domaine que celui que vous avez configuré lors de votre inscription sur SendGrid.
Même chose que pour les autres méthodes, vous pouvez ensuite indiquer un nom et une adresse d'expéditeur, et faire un test pour vérifier que tout est bien configuré.
Envoyer les e-mails en SMTP via Sendinblue
Dernière option pour résoudre un problème d'envoi d'emails sur WordPress en utilisant le SMTP : Sendinblue.
Cliquez sur le bouton "Get started with Sendinblue" pour accéder au site et entrez votre adresse e-mail. Vous devrez ensuite la valider.
On peut renseigner quelques informations basiques (adresse, téléphone, etc) puis choisir le plan gratuit, qui permet de bénéficier de 300 emails gratuits par jour.
Une fois cette phase de configuration initiale terminée, vous pouvez aller dans le menu SMTP & API de Sendinblue et copier la clé API qui y figure.
Il suffit d'entrer cette clé API dans la configuration du plugin WP Mail SMTP et d'indiquer l'URL de votre site WordPress comme "Sending Domain", puis, comme pour les autres méthodes, de choisir le nom et l'adresse d'expédition par défaut des e-mails.
Vous pourrez ensuite faire un test pour vérifier que tout fonctionne bien !
Une bonne parade aux problèmes d'emails
Normalement, grâce à l'aide du plugin WP Mail SMTP (ou d'un plugin similaire, car il en existe d'autres), vous devriez pouvoir résoudre un problème d'envoi d'emails sur WordPress dans un grand nombre de situations, en remplaçant la fonction mail() par défaut par l'usage du SMTP.
De manière générale, je vous conseille de privilégier un service tiers spécialisé (comme Sendinblue, Sendgrid ou Gmail) car leur objectif premier est d'assurer une bonne qualité d'envoi et de réception.
J'espère que cet article vous sera utile si vous êtes un jour confronté à un problème d'emails !
Hello Marlène ! La manoeuvre n’a pas marché pour moi. J’ai choisi la méthode utilisant l’hébergeur du site (pour moi Dreamhost) et modifié le fichier wp-config.php de WordPress à partir du control panel de Dreamhost. Dans le wizard du plugin, le champ Mot de passe SMTP n’est plus modifiable (normal), mais le mot de passe n’a pas été complété comme tu l’indiques. En dessous, j’ai la mention « This setting is already configured with the WP Mail SMTP constant. To change it, please edit or remove the WPMS_SMTP_PASS constant in your wp-config.php file ». Mais comme le champ est vide, quand je clique sur « Save and Continue » en bas de la page, ça refuse d’avancer et me dit que j’ai un champ obligatoire non rempli (le champ Mot de passe, donc). Comment faire ? Merci par avance.
Bonjour Gaelle, ça peut valoir le coup d’essayer la configuration 100% via le plugin dans un premier temps pour voir si ça résout le problème de mails… et, si ça fonctionne, de contacter le support de l’hébergeur pour comprendre ce qui bloque quand on met les données dans le fichier wp-config.php, peut-être une histoire de droits d’accès.
Bonjour, merci pour ce Tuto. Malheureusement çà ne fonctionne pas pour moi. J’ai essayé via SendGrid. Quand vous dites : « choisir le nom et l’adresse d’expédition par défaut des e-mails. » quelle adresse mail faut-il indiquer ? Par défaut j’ai une adresse flywheel qui est incrémentée. Merci !
Bonjour Lise, c’est l’adresse que l’on souhaite voir apparaître quand on envoie un mail à quelqu’un (certains sites utilisent une adresse du type
no*****@no******.com
pour que les gens ne puissent pas répondre au mail mais on peut aussi mettre une adresse de contact fonctionnelle si on souhaite que les gens puissent répondre au message).
Qu’est-ce qui ne fonctionne pas exactement ? Est-ce que tu as bien pu récupérer l’API Key, la renseigner ? Est-ce que tu as obtenu des infos suite au test avec Check & Log Email ?
J’ai tout renseigné, j’ai fait Check & Log Email et aucun mail n’arrive nulle part .
Bonjour Marlène, Bravo pour votre publication, que j’ai suivie à la lettre. Et enfin, ça marche ! Vous m’avez aidé à résoudre un problème d’email via WordPress que je n’arrivais pas à résoudre. Grand merci pour votre aide.
Belle journée à vous.
Bonjour Gilles, merci beaucoup d’avoir pris le temps de laisser un message ! Bon dimanche :)
Bonjour !
Voilà des semaines que je cherche une solution à ce problème d’envoi d’e-mails qui semblent partir mais n’aboutissent pas… Et bonheur, je découvre ton article ce matin !
Je réserve donc sa lecture détaillée à mes prochains moments de concentration studieuse, en espérant qu’il me permette d’avancer.
Vraiment merci et belle journée à toi
J’espère que ça te sera utile, il ne faut pas hésiter à contacter son hébergeur quand ce genre de souci survient. Quand on a un bon support technique, ça peut permettre de gagner du temps dans la résolution du problème.
J’ai potassé ton article et je m’en suis finalement sortie grâce à toi. En optant pour la solution SendGrid, tout semble bien se passer à l’exception près du fait que les mails arrivent dans mes spams…
J’ai donc encore un peu de travail, mais merci !
Effectivement, j’aurais pu penser à joindre mon hébergeur plus tôt, au moins pour obtenir des pistes de réflexion.
Merci de m’avoir fait découvrir le plugin « check Email » que je ne connaissais pas. Je l’ai installé et ai fait un test pour voir si mon formulaire de contact fonctionnait bien et ça marche ;) J’ai bien reçu les mails dans ma boite mail.
Je trouve que la difficulté avec les problèmes d’e-mail, c’est qu’ils surviennent souvent sans prévenir ! On devrait toujours penser à retester son formulaire de contact après une mise à jour de plugin par exemple… mais j’avoue que je ne le fais pas systématiquement.