Sur cette pageComment WordPress envoie les e-mails par défaut
Un site WordPress envoie plus d'e-mails que son propriétaire ne le pense. La notification du formulaire de contact. La réinitialisation du mot de passe. Le message de bienvenue d'un nouvel utilisateur, l'alerte de modération d'un commentaire et, pour une boutique, chaque confirmation de commande, facture et mise à jour d'expédition envoyée par WooCommerce. La plupart de ces e-mails n'ont fait l'objet d'aucune conception particulière, et personne ne les vérifie jusqu'à ce qu'un client signale qu'il n'a jamais reçu l'e-mail concernant sa commande.
Lorsque l'un de ces e-mails arrive dans les spams, examinez comment le message quitte le serveur avant d'en modifier le texte. Dans WordPress, cette partie utilise par défaut l'option la moins fiable en matière de délivrabilité.
Comment WordPress envoie les e-mails par défaut
WordPress lui-même, ainsi que presque toutes les extensions qui envoient des e-mails, y compris WooCommerce et les extensions de formulaires, passent par une seule fonction, wp_mail(). Celle-ci transmet le message à PHPMailer, qui le transmet par défaut à la fonction mail() de PHP. Cette fonction le confie ensuite au programme de messagerie installé sur le serveur d’hébergement. Aucune connexion à un fournisseur de messagerie, aucune signature, rien dans votre DNS n’indique que ce serveur est autorisé à envoyer des e-mails pour votre domaine.
L’adresse d’expéditeur choisie est wordpress@, suivie du domaine de votre site [WordPress supprime le préfixe www.]. Si vous ne l’avez jamais modifiée, c’est ce que vos clients voient dans le champ From et, sur de nombreux sites, personne n’a jamais créé cette boîte aux lettres.
Sur un hébergement mutualisé, le message est ensuite envoyé depuis le serveur de l’hébergeur, via une adresse IP partagée avec de nombreux autres sites. Si l’un d’eux envoie des messages à une liste achetée, ou se fait pirater et commence à diffuser du spam en masse, l’adresse IP acquiert une mauvaise réputation, et vos e-mails de réinitialisation de mot de passe partent depuis la même adresse IP que les leurs.
Une installation WordPress par défaut envoie donc des e-mails dont le SPF ne correspond pas à votre domaine. L’adresse de rebond reste généralement associée au nom de serveur de l’hébergeur et, si votre adresse y figure à la place, SPF échoue complètement. Il n’y a pas non plus de signature DKIM pour votre domaine, donc DMARC échoue. Gmail et Yahoo ont mis en place leurs règles pour les expéditeurs en février 2024. Microsoft a fait de même en mai 2025 pour les domaines envoyant plus de 5 000 messages par jour à Outlook.com. Depuis novembre 2025, Gmail rejette davantage d’e-mails qui enfreignent ses règles au lieu de les classer comme spam.
Envoyez via un véritable service de messagerie
La correction la plus importante consiste à ne plus utiliser mail(). Installez un plugin SMTP (WP Mail SMTP, FluentSMTP et Post SMTP sont les plus courants, et chacun propose une version gratuite), puis connectez-le à un service qui envoie correctement les e-mails : votre propre fournisseur de messagerie, comme Google Workspace ou Microsoft 365, ou un service d'envoi transactionnel comme Amazon SES, Brevo, SendGrid ou Mailgun.
Le plugin remplace le mécanisme de transport utilisé par wp_mail(). Ainsi, tous les e-mails de tous les plugins sont envoyés par le nouveau moyen, sans modifier les plugins eux-mêmes. Si le plugin le permet, utilisez l'option API du fournisseur plutôt que le protocole SMTP avec un mot de passe. WP Mail SMTP indique que l'accès par API fonctionne même lorsque votre hébergeur bloque les ports SMTP.
Beaucoup de personnes négligent l'étape suivante. Authentifiez le domaine auprès de ce fournisseur : chacun vous fournit des enregistrements DNS à publier, généralement deux ou trois enregistrements CNAME pour DKIM ainsi qu'une directive include SPF ou un domaine de chemin de retour personnalisé. Tant que ces enregistrements ne figurent pas dans votre DNS, le fournisseur utilise son propre nom dans la signature, et DMARC échoue comme avec votre hébergeur.
L'adresse From des formulaires de contact
Les extensions de formulaire, notamment Contact Form 7 et WPForms, vous permettent de choisir l'adresse indiquée dans la ligne From de la notification que vous recevez. De nombreuses configurations y placent l'adresse du visiteur afin que le bouton Reply permette de lui répondre. Cela paraît astucieux, mais c'est précisément ce que DMARC a été conçu pour empêcher.
Supposons qu'une visiteuse appelée Anna écrive depuis anna@yahoo.com. Votre site envoie alors un message prétendant provenir de yahoo.com par l'intermédiaire d'un serveur que Yahoo n'a jamais autorisé. yahoo.com publie une politique DMARC avec p=reject. Un serveur de réception qui la respecte refuse donc la notification, considérée comme usurpée. Avec une visiteuse utilisant Gmail, la politique est moins stricte et le message finit plus souvent dans les spams. WPForms signale précisément ce problème dans sa documentation.From correspond à votre adresse, Reply-To à celle du visiteur
Configurez plutôt le formulaire ainsi :
- From: une adresse de votre propre domaine, par exemple
forms@yourdomain.com, avec le même domaine que celui pour lequel votre extension SMTP est authentifiée. - Reply-To: l'adresse du visiteur, récupérée dans le champ du formulaire. Le bouton Reply permet toujours de répondre à Anna.
- To: la boîte de réception que vous consultez réellement.
Dans Contact Form 7, ces réglages se trouvent dans l'onglet Mail : indiquez votre propre adresse dans From et ajoutez Reply-To: [your-email] sous Additional headers. Les autres extensions de formulaire proposent un champ Reply-To dans les paramètres de leurs notifications.
E-mails WooCommerce
WooCommerce dispose de ses propres paramètres d’expéditeur : WooCommerce, puis Settings, puis Emails, dans la section Email Sender Options, avec un nom « From » et une adresse « From ». Par défaut, l’adresse est l’adresse e-mail d’administration du site. Si la personne qui a installé la boutique a utilisé une adresse Gmail à cet endroit, chaque confirmation de commande est envoyée en prétendant provenir de gmail.com et échoue à DMARC pour la même raison que le formulaire de contact ci-dessus. Indiquez une adresse de votre domaine authentifié. Le nom de la boutique est un bon nom d’expéditeur. (Pour les notifications de commande qui vous sont envoyées, WooCommerce place déjà le client dans Reply-To, ce qui est la bonne configuration.)
Deux problèmes propres aux e-mails d’une boutique ne se posent pas avec un formulaire de contact.
Le premier concerne le volume. Si une extension de promotion ou de newsletter envoie des e-mails aux clients par le même canal que les confirmations de commande, les e-mails marketing et transactionnels partagent la même réputation. Si la newsletter génère des plaintes, les reçus en pâtissent. Envoyer ces deux types d’e-mails par des services différents permet de les séparer. Utiliser un sous-domaine distinct pour le marketing aide un peu, même si les destinataires accordent toujours une certaine importance à la réputation du domaine principal.
Le second concerne le désabonnement. Les confirmations de commande et les réinitialisations de mot de passe sont des e-mails transactionnels, et la règle de désabonnement en un clic de Gmail et Yahoo ne s’applique pas à ces messages. Une demande d’avis, un rappel de panier abandonné ou un e-mail « ceci pourrait aussi vous plaire » envoyé à d’anciens acheteurs est un message marketing. Si vous en envoyez en nombre, cette règle s’applique pleinement, ce qui implique un en-tête List-Unsubscribe avec une option en un clic. Vérifiez si l’extension qui les envoie ajoute cet en-tête. Le test ci-dessous vous l’indiquera dans tous les cas.
La partie DNS, en termes simples
Quel que soit le service utilisé pour l’envoi, votre domaine doit comporter trois éléments dans DNS pour que les e-mails soient considérés comme fiables. Vous trouverez une présentation complète dans SPF, DKIM et DMARC expliqués. Voici ce que cela signifie pour un site WordPress.
- SPF. Un enregistrement TXT sur votre domaine qui indique qui est autorisé à envoyer des e-mails pour celui-ci. De nombreux services d’envoi ne nécessitent aucune modification ici, car ils assurent l’alignement au moyen de leur propre domaine de rebond. Si le vôtre vous demande d’ajouter un
include:et que le domaine possède déjà un enregistrement pour votre fournisseur de messagerie, ajoutez-le à cet enregistrement. N’en créez pas un deuxième, car deux enregistrements SPF constituent une erreur et aucun des deux ne fonctionne. Vérifiez le résultat avec l’outil de vérification SPF. - DKIM. Les enregistrements fournis par votre service d’envoi. Une fois qu’ils sont actifs, le service signe chaque message avec votre domaine. C’est cette signature que DMARC recherche.
- DMARC. Un enregistrement TXT à l’adresse
_dmarc.yourdomain.com. Commencez parv=DMARC1; p=none; rua=mailto:suivi d’une adresse que vous consultez, puis renforcez la politique lorsque les rapports montrent qu’aucun de vos e-mails n’échoue. L’outil de vérification DMARC lit votre configuration actuelle.
Gardez à l’esprit que le serveur d’hébergement peut encore envoyer lui-même certains e-mails, par exemple une tâche cron ou une ancienne extension qui appelle directement mail() au lieu de wp_mail(). Ces messages contournent l’extension SMTP, et les rapports DMARC les feront apparaître comme une source inattendue.
Tester les vrais e-mails, pas un message de test
Chaque extension SMTP dispose d’un bouton « send test email », qui prouve uniquement que la connexion fonctionne. Il ne vous montre pas la confirmation de commande telle que WooCommerce la génère, la notification de formulaire avec son en-tête Reply-To, ni l’e-mail de réinitialisation du mot de passe avec le lien ajouté par WordPress.
Je demande donc à WordPress d’envoyer les vrais e-mails. Une adresse de test obtenue sur la page d’accueil accepte un seul message. Utilisez donc une nouvelle adresse pour chaque e-mail à vérifier. Pour le formulaire, définissez temporairement cette adresse comme destinataire de la notification, puis envoyez le formulaire. Pour WooCommerce, passez une commande de test en utilisant cette adresse comme e-mail du client. Pour la réinitialisation du mot de passe, attribuez cette adresse à un utilisateur de test et demandez une réinitialisation. Chaque message reçoit son propre rapport, avec SPF, DKIM et DMARC ainsi que leur alignement, 21 listes de blocage, le contenu et les liens, et les règles applicables aux expéditeurs en nombre. Pour déterminer le dossier de réception dans Gmail, Outlook, Yahoo et chez d’autres fournisseurs, le même message doit être envoyé à une liste de boîtes de réception avec un marqueur dans l’objet. Un formulaire ou une commande passée dans une boutique ne peut pas le faire. Réservez donc cette partie aux e-mails que vous envoyez vous-même.
Si vous préférez ne pas créer manuellement des commandes de test, l’extension WordPress gratuite envoie ces messages au moyen de la fonction wp_mail() de votre site, en suivant le même chemin que les e-mails de vos clients, puis affiche le résultat dans le tableau de bord. Elle détecte également lorsque le site commence à envoyer un type d’e-mail qu’elle n’avait jamais vu auparavant.
Si vos e-mails arrivent toujours dans les spams
Si l’authentification réussit, que l’adresse From appartient à votre domaine et que l’e-mail arrive toujours dans les spams, vérifiez la réputation de l’infrastructure utilisée pour l’envoi. Une IP d’hébergement mutualisé figurant sur une liste de blocage est une cause fréquente si vous utilisez encore mail(). Le vérificateur de listes de blocage vous le montrera. Le contenu joue un rôle moins important qu’on ne le pense. Une notification de formulaire contenant un seul lien et trois lignes de texte déclenche rarement un filtre à elle seule. En revanche, cela peut arriver à un e-mail WooCommerce avec un modèle HTML lourd, une grande image et un raccourcisseur de liens.
Testez un message, corrigez les problèmes indiqués dans le rapport, puis renvoyez-le à une nouvelle adresse.