Comment résoudre un problème d’envoi d’e-mails sur WordPress ?


En début d’année, je me suis étonnée à une période de ne plus recevoir d’e-mails en lien avec mon blog. Au départ, je me suis dit que les gens étaient sûrement occupés par les vacances scolaires… puis j’ai trouvé ça un peu étrange. Y avait-il un problème d’envoi d’e-mails ?

J’ai alors testé le formulaire de contact, qui fonctionnait bien… sauf que le message n’arrivait jamais à destination !

Un problème d’e-mails sur un site peut empêcher vos lecteurs de prendre contact avec vous ou vous faire passer à côté de certaines opportunités. Mais comment le résoudre ? Je vous propose dans cet article quelques pistes à creuser !

Les problèmes d’envoi d’e-mails liés à la fonction mail()

Aujourd’hui, nous utilisons tellement l’e-mail que l’on oublie parfois comment un e-mail est envoyé. Or, le comprendre permet souvent de commencer à résoudre un problème d’envoi ou de réception d’e-mails sur WordPress.

Quand un visiteur vous envoie un message depuis votre formulaire de contact, ça mobilise par défaut une fonction « 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…

Les problèmes d'envoi d'e-mails, très fréquents sur les blogs
Les problèmes d’envoi d’e-mails, très fréquents sur les blogs

Une fonction mail() désactivée

C’est là que peut survenir le premier problème : certains hébergeurs désactivent la fonction « mail() ». Et quand j’avais arrêté de recevoir des e-mails en début d’année, c’était lié à une désactivation par erreur de la fonction mail sur mon hébergement web (mon ancien hébergeur avait fait de lourds changements d’infrastructure… et mes e-mails étaient visiblement passés à la trappe dans la bataille !).

Cette désactivation de la fonction mail() peut être une erreur mais elle peut aussi survenir si vous avez envoyé beaucoup d’e-mails vers des adresses qui n’existent pas (via votre newsletter par exemple). Sur un hébergement mutualisé, ça déclenche parfois une suspension du service mail.

C’est un moyen de prévenir le spam… car normalement, une liste d’abonnés à une newsletter est censée être « propre » : quand on constate qu’une adresse e-mail n’existe plus ou renvoie un message d’erreur, on doit la supprimer de la liste de manière à ce que la newsletter reste « saine » et n’envoie que des messages à des adresses existantes et fonctionnelles.

Il faut donc vérifier sur le site de votre hébergeur, via votre compte, que la fonction mail() est toujours active (ou contacter 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, un envoi excessif d’e-mails, un site piraté…).

Tester la fonction mail() avec le plugin Check Email

Sur WordPress, vous pouvez installer un plugin baptisé « Check Email ». 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 Outils > Check Email de WordPress, en indiquant l’adresse e-mail de votre choix pour le test.

Le plugin Check Email sur WordPress
Le plugin Check Email sur WordPress

Vous pouvez désinstaller le plugin après utilisation, il n’est pas utile de le conserver sur le long terme.

Le SMTP, une meilleure solution pour envoyer des e-mails

La fonction mail() utilisée par défaut, par des plugins comme MailPoet, a d’autres limites. En effet, elle n’offre aucune forme de « sécurité » et de contrôle.

Or, aujourd’hui, le spam explose, il y a 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.

Ils essaient au maximum d’authentifier les échanges… et souvent, quand vous envoyez une newsletter ou un e-mail depuis votre site par la voie « classique », celui-ci risque d’atterrir dans le dossier spam du destinataire, voire de ne jamais arriver.

Il existe heureusement une alternative : le SMTP (« Simple Mail Transfer Protocol »).

Pourquoi envoyer les e-mails en SMTP ?

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 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 !

Le plugin WP Mail SMTP

Il s’installe tout simplement depuis le menu Extensions > Ajouter de WordPress… et ajoute un lien de menu dans Réglages > WP Mail SMTP.

Plugin WP Mail SMTP pour WordPress
Plugin WP Mail SMTP pour WordPress

Ce plugin vous permet d’envoyer vos e-mails directement, via la fonction mail()… mais aussi et surtout d’envoyer vos e-mails via un service tiers plus sécurisé. Le but étant que vos e-mails arrivent à bon port autant que faire se peut.

Options d'envoi en SMTP via le plugin
Options d’envoi en SMTP via le plugin

Envoyer les e-mails en SMTP via son hébergeur

WP Mail SMTP offre plusieurs possibilités : vous pouvez d’abord envoyer des e-mails via le SMTP de votre hébergeur.

Parmi les options disponibles, choisissez « Other SMTP » puis entrez les paramètres fournis par votre hébergeur web : hôte SMTP, port, authentification requise (c’est généralement le cas), mode d’encryptage (non-sécurisé, sécurisé avec TLS ou SSL) et login/mot de passe.

D’un hébergeur à l’autre, on vous donne ces informations de manière plus ou moins claire.

Informations SMTP à renseigner
Informations SMTP à renseigner

Une fois les paramètres enregistrés, vous pouvez passer au deuxième onglet des réglages de WP Mail SMTP, « Email Test »… et essayer d’envoyer un e-mail de test à une adresse de votre choix.

S’il y a un problème de configuration, vous allez voir 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.

Par ailleurs, deux conseils supplémentaires :

  • Cochez la case « Set the return-path to match the From Email » : ça vous permettra d’être informé si votre site envoie un e-mail à une adresse qui n’existe plus.
  • 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.
    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 :

Mot de passe SMTP dans wp-config.php
Mot de passe SMTP dans wp-config.php

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é, comme ceci :

Mot de passe SMTP déjà rempli
Mot de passe SMTP déjà rempli

Envoyer les e-mails en SMTP via Sendgrid

Deuxiè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 « Try for Free » une fois que vous êtes sur le site de SendGrid). Une fois connecté, allez dans le menu Settings > API Keys de votre compte.

Menu API Keys sur Sendgrid
Menu API Keys sur Sendgrid

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.

Créer une clé API sur Sendgrid
Créer une clé API sur Sendgrid

Activez donc simplement l’option « Mail Send ».

Option Mail Send sur Sendgrid
Option Mail Send sur Sendgrid

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 :

Clé API copiée dans les réglages du plugin WordPress
Clé API copiée dans les réglages du plugin WordPress

SendGrid permet d’envoyer jusqu’à 100 e-mails par jour avec un compte gratuit, ce qui offre déjà pas mal de possibilités !

Tout comme pour la méthode d’envoi d’e-mails avec votre hébergeur, je vous conseille de cocher la case « Set the return-path to match the From Email ».

La case Return Path
La case Return Path

Envoyer les e-mails en SMTP avec Gmail

La méthode est un peu 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 ».

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 » :

Créer un projet sur l'API Gmail
Créer un projet sur l’API Gmail

Passez ensuite à l’étape « Identifiants » :

Identifiants sur l'API Gmail
Identifiants sur l’API Gmail

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 « Créer un ID client OAuth 2.0 ». Je vous rassure, ce n’est pas vous qui allez créer cette chose mystérieuse ;)

Entrez un nom qui vous rappellera de quoi il s’agit (par exemple « Envoi d’e-mails WordPress ») et entrez l’adresse complète de votre site dans le champ « Origines JavaScript autorisées ».

Enfin, il reste à remplir le champ « URI de redirection autorisés ». Pour trouver l’information, retournez sur WordPress. Tout en bas de 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 ».

La ligne Authorized Redirect URI
La ligne Authorized Redirect URI

Vous pouvez cliquer sur le bouton bleu pour passer à l’étape suivante, qui s’intitule « Configurer l’écran d’autorisation d’OAuth 2.0 ». Vérifiez que l’adresse e-mail Gmail indiquée est correcte et mettez le nom de votre site. Cet écran ne s’affichera pas à vos utilisateurs en réalité.

Ecran d'autorisation Gmail
Ecran d’autorisation Gmail

Google vous donne enfin la possibilité de télécharger ces informations… mais ce n’est pas utile dans notre cas, cliquez juste sur « Je le ferai plus tard ». Cliquez ensuite sur la petite icône « crayon » pour accéder à un récapitulatif des informations de configuration.

Informations de configuration Gmail API
Informations de configuration Gmail API

Vous verrez :

  • L’ID client (à recopier dans le champ « Client ID » de la configuration du plugin WP Mail SMTP).
  • Le code secret du 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 orange « Allow plugin to send emails using your Google account » pour autoriser WP Mail SMTP à passer par votre compte Gmail pour envoyer des messages.

Autoriser le plugin SMTP
Autoriser le plugin SMTP

Vous serez ensuite redirigé sur la page de paramétrage du plugin et verrez le message « You have successfully linked the current site with your Google API project. Now you can start sending emails through Google. »

Tout comme pour les autres méthodes d’envoi d’e-mails, je vous conseille de cocher la case « Set the return-path to match the From Email ».

Ce plugin WordPress peut permettre de pallier efficacement à un problème d’envoi d’e-mails via votre site. Ce genre de difficulté peut avoir beaucoup de causes différentes : des problèmes de configuration, de serveur, un blocage causé par un envoi excessif d’e-mails, un piratage… J’espère que ça vous sera utile si vous y êtes un jour confronté !


Poster un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Lorsque vous postez un commentaire sur le blog, le nom indiqué dans la case "Prénom" ainsi que votre message apparaîtront publiquement. Votre adresse e-mail restera confidentielle.

5 commentaires sur “Comment résoudre un problème d’envoi d’e-mails sur WordPress ?

  • Pauline

    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

    Répondre à Pauline
    • Marlène

      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.

      Répondre à Marlène
    • Pauline

      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.

      Répondre à Pauline
  • Angelilie

    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.

    Répondre à Angelilie
    • Marlène

      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.

      Répondre à Marlène
Si vous aimez les articles du site, n'hésitez pas à faire vos achats sur Amazon.fr via ce lien ; il me permettra de toucher une commission grâce au programme Partenaires Amazon EU.