Vous ne recevez plus les e-mails automatiques de WordPress, que ce soient les notifications de mise à jour, les nouveaux commentaires, ou les demandes de contact via vos formulaires ? Il est probablement temps de configurer SMTP dans WordPress correctement. Dans ce guide, nous allons voir comment le faire sans plugin et surtout de manière sécurisée, en évitant de stocker vos identifiants en clair dans votre code.
Qu'est-ce que le protocole SMTP ?
SMTP (Simple Mail Transfer Protocol) est le protocole Internet standard utilisé pour la transmission d’e-mails sur les réseaux IP. C’est lui qui achemine vos messages d’un serveur à un autre, avant qu’ils ne soient récupérés par un client de messagerie via POP ou IMAP.
Par défaut, SMTP ne comprend pas de mécanisme de chiffrement. C’est pourquoi on l’utilise conjointement avec SSL ou TLS pour sécuriser les échanges. En pratique :
- Port 465 avec chiffrement SSL/SMTPS : la connexion est chiffrée dès le départ.
- Port 587 avec chiffrement STARTTLS : la connexion démarre en clair puis bascule en mode chiffré.
Messagerie intégrée de WordPress ou SMTP ?
La fonction mail() de WordPress
mail() de PHP pour envoyer des e-mails directement depuis le serveur web. Cette approche pose plusieurs problèmes :
- Les e-mails sont souvent classés en spam ou phishing car l’identité de l’expéditeur ne peut pas être vérifiée.
- La fonction
mail()n’est pas correctement configurée sur tous les hébergeurs. - Elle ne fournit aucune possibilité de suivi ni de gestion des erreurs.
Pourquoi utiliser SMTP dans WordPress
Passer par un serveur SMTP externe (celui de votre hébergeur, de Brevo, Gmail, etc.) offre plusieurs avantages concrets :
- Meilleure délivrabilité : les e-mails sont envoyés depuis un serveur authentifié, moins susceptibles d’être marqués comme spam.
- Fonctionnalités avancées : suivi des envois, gestion des erreurs, file d’attente.
- Compatibilité avec les enregistrements SPF, DKIM et DMARC de votre domaine.
Comment configurer SMTP dans WordPress sans plugin
Étape 1 : stocker les identifiants SMTP dans wp-config.php
La bonne pratique consiste à déclarer vos identifiants SMTP comme des constantes PHP dans le fichier wp-config.php, à l’image de ce que WordPress fait déjà pour les accès à la base de données (DB_PASSWORD, DB_HOST, etc.).
Ouvrez votre fichier wp-config.php via FTP ou le gestionnaire de fichiers de votre hébergeur, et ajoutez ces lignes avant la ligne /* That's all, stop editing! */ :
// -----------------------------------------------
// Configuration SMTP WordPress — identifiants sécurisés
// -----------------------------------------------
define( 'SMTP_HOST', 'smtp.hostinger.com' ); // Hôte SMTP de votre prestataire
define( 'SMTP_PORT', 465 ); // 465 (SSL) ou 587 (TLS)
define( 'SMTP_SECURE', 'ssl' ); // 'ssl' pour le port 465, 'tls' pour le port 587
define( 'SMTP_USERNAME', 'contact@mondomaine.com' );
define( 'SMTP_PASSWORD', 'votre_mot_de_passe' );
define( 'SMTP_FROM', 'contact@mondomaine.com' );
define( 'SMTP_FROM_NAME', 'Mon Entreprise' );
Pourquoi wp-config.php plutôt que .htaccess ?
Le fichier .htaccess est souvent mentionné comme alternative, mais il présente une limite importante : sur les serveurs LiteSpeed (utilisés notamment par Hostinger), la directive SetEnv n’est pas toujours interprétée côté PHP. Le fichier wp-config.php est quant à lui toujours lu par WordPress et protégé par défaut contre tout accès HTTP direct.
Étape 2 : configurer PHPMailer dans functions.php
Ouvrez le fichier functions.php de votre thème enfant. N’éditez pas le thème parent directement, car vos modifications seraient écrasées à la prochaine mise à jour. Ajoutez-y ce code :
/**
* Configuration SMTP WordPress
* Les identifiants sont définis dans wp-config.php
*/
add_action( 'phpmailer_init', 'alpixi_configurer_smtp', 999 );
function alpixi_configurer_smtp( $phpmailer ) {
// Sécurité : on vérifie que les constantes sont bien définies
// avant d'aller plus loin, pour éviter toute erreur fatale
if ( ! defined('SMTP_HOST') || ! defined('SMTP_USERNAME') || ! defined('SMTP_PASSWORD') ) {
return;
}
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = true;
$phpmailer->Port = defined('SMTP_PORT') ? SMTP_PORT : 587; // Fallback sur 587 si la constante est absente
$phpmailer->Username = SMTP_USERNAME;
$phpmailer->Password = SMTP_PASSWORD;
$phpmailer->SMTPSecure = ( defined('SMTP_SECURE') && SMTP_SECURE === 'ssl' )
? PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_SMTPS
: PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
// From : l'adresse affichée dans le champ "De :" du destinataire
// Sender : l'enveloppe SMTP (expéditeur technique, utilisé pour SPF)
if ( defined('SMTP_FROM') ) {
$phpmailer->From = SMTP_FROM;
$phpmailer->Sender = SMTP_FROM; // Important pour la délivrabilité SPF
}
if ( defined('SMTP_FROM_NAME') ) {
$phpmailer->FromName = SMTP_FROM_NAME;
}
}
// Forcer l'expéditeur en priorité maximale
// Certains plugins (CF7, WooCommerce, Gravity Forms) écrasent
// ces valeurs via leurs propres filtres — le priority 999 garantit
// que ce sont toujours vos valeurs qui l'emportent
add_filter( 'wp_mail_from', function() {
return defined('SMTP_FROM') ? SMTP_FROM : get_option('admin_email');
}, 999 );
add_filter( 'wp_mail_from_name', function() {
return defined('SMTP_FROM_NAME') ? SMTP_FROM_NAME : get_option('blogname');
}, 999 );
Quelques précisions sur les choix techniques de ce code :
- Priorité 999 sur le hook
phpmailer_init: garantit que la configuration SMTP est appliquée en dernier, après tous les plugins qui pourraient modifier PHPMailer. - Vérification des constantes avec
defined(): évite une erreur fatale si les constantes n’ont pas été ajoutées danswp-config.php. $phpmailer->Sender: définit l’enveloppe SMTP (l’expéditeur technique), distincte du champFromvisible par le destinataire. C’est cette valeur qui est vérifiée par l’enregistrement SPF de votre domaine.- Filtres
wp_mail_frometwp_mail_from_nameen priorité 999 : certains plugins remplacent l’expéditeur via ces filtres. Passer à 999 assure que vos valeurs ont toujours le dessus. - Fallback sur
admin_emailetblogname: si les constantes sont absentes, WordPress utilise ses propres valeurs par défaut plutôt que de renvoyer une chaîne vide.
Étape 3 : tester la configuration SMTP WordPress
Pour vérifier que la configuration SMTP fonctionne correctement, installez temporairement le plugin gratuit Check Email, qui permet d’envoyer un e-mail de test directement depuis le tableau de bord WordPress. Vérifiez bien que l’e-mail reçu affiche le bon expéditeur et n’atterrit pas en spam. Désinstallez le plugin une fois le test validé.
Si l’e-mail de test n’arrive pas, vérifiez dans l’ordre :
- Que les constantes sont bien enregistrées dans
wp-config.php(pas de faute de frappe, pas d’espace avant<?php). - Que le port et le chiffrement correspondent bien aux exigences de votre prestataire SMTP.
- Que votre hébergeur n’a pas bloqué les connexions sortantes sur ce port (cas fréquent sur les hébergements mutualisés d’entrée de gamme).
Paramètres SMTP selon votre prestataire
Hostinger
- Hôte : smtp.hostinger.com
- Port : 465
- Chiffrement : SSL
- Identifiant : votre adresse e-mail complète
- Mot de passe : le mot de passe du compte e-mail (à créer dans hPanel)
OVH
- Hôte : ssl0.ovh.net
- Port : 465
- Chiffrement : SSL
- Identifiant : votre adresse e-mail complète
OVH supporte également le port 587 avec STARTTLS si vous préférez cette configuration.
Brevo (ex-Sendinblue), recommandé pour la délivrabilité
Si vous gérez plusieurs sites WordPress ou souhaitez un relay SMTP plus robuste avec des statistiques d’envoi, Brevo est une excellente option. Son plan gratuit permet l’envoi de 300 e-mails par jour.
- Hôte : smtp-relay.brevo.com
- Port : 587
- Chiffrement : TLS (STARTTLS)
- Identifiant : votre adresse e-mail Brevo ou, pour les comptes Agence, l’identifiant SMTP généré au format
xxxxxx@smtp-brevo.com - Mot de passe : la clé SMTP générée dans votre compte Brevo (à ne pas confondre avec le mot de passe de connexion)
Pensez également à authentifier votre domaine d’envoi dans l’interface Brevo afin d’activer la signature DKIM. Sans cette étape, vos e-mails risquent d’être classés en spam même avec une configuration SMTP correcte.
Gmail / Google Workspace
- Hôte : smtp.gmail.com
- Port : 587
- Chiffrement : TLS
- Identifiant : votre adresse Gmail
- Mot de passe : un mot de passe d’application à générer dans votre compte Google (obligatoire si la double authentification est activée — Google bloque les connexions SMTP avec le mot de passe principal)
SPF, DKIM et DMARC : pourquoi c'est indispensable
Configurer SMTP dans WordPress est une bonne première étape, mais elle ne suffit pas toujours à garantir la délivrabilité de vos e-mails. Pour que les serveurs de messagerie de vos destinataires fassent confiance à vos envois, votre nom de domaine doit disposer de trois enregistrements DNS :
- SPF (Sender Policy Framework) : déclare quels serveurs sont autorisés à envoyer des e-mails au nom de votre domaine. Sans SPF, vos e-mails peuvent être rejetés ou classés en spam.
- DKIM (DomainKeys Identified Mail) : ajoute une signature cryptographique à chaque e-mail envoyé, prouvant qu’il n’a pas été altéré en transit. La plupart des prestataires SMTP (Brevo, OVH, Google) vous fournissent la clé DKIM à ajouter dans vos DNS.
- DMARC : s’appuie sur SPF et DKIM pour définir la politique à appliquer en cas d’échec d’authentification (ignorer, mettre en quarantaine ou rejeter). Il permet aussi de recevoir des rapports sur les tentatives d’usurpation de votre domaine.
Ces trois enregistrements se configurent dans la zone DNS de votre domaine, chez votre registrar ou hébergeur (OVH, Hostinger, etc.). Si vous n’êtes pas sûr de votre configuration actuelle, des outils gratuits comme MXToolbox vous permettent de la vérifier en quelques secondes.
Comparatif des méthodes de stockage des identifiants SMTP
Toutes les approches pour stocker vos identifiants SMTP dans WordPress ne se valent pas d’un point de vue sécurité. Voici un résumé :
| Méthode | Sécurité | Compatibilité serveur | Recommandé |
|---|---|---|---|
Identifiants en dur dans functions.php |
❌ Faible | ✅ Universelle | Non |
Variables d'environnement via .htaccess |
⚠️ Moyenne | ⚠️ Inopérant sur LiteSpeed | Non |
Constantes dans wp-config.php |
✅ Bonne | ✅ Universelle | ✅ Oui |
| Plugin dédié (WP Mail SMTP, FluentSMTP…) | ✅ Bonne | ✅ Universelle | Oui, si interface graphique souhaitée |
Faut-il utiliser un plugin SMTP pour WordPress malgré tout ?
La méthode décrite dans ce guide convient parfaitement si vous êtes à l’aise avec l’édition de fichiers WordPress. Pour des clients qui préfèrent gérer leur configuration depuis le tableau de bord, ou si vous avez besoin de logs d’envoi et d’alertes en cas d’échec, des plugins comme FluentSMTP (gratuit) ou WP Mail SMTP restent d’excellentes options, d’autant qu’ils appliquent également les bonnes pratiques de stockage sécurisé.
Dans tous les cas, ne stockez jamais vos identifiants SMTP en clair directement dans votre code. Une bonne configuration SMTP dans WordPress est aussi une question de sécurité pour protéger votre serveur et votre réputation d’expéditeur.
Questions fréquentes sur la configuration SMTP dans WordPress
Pourquoi WordPress n'envoie-t-il pas les e-mails par défaut ?
WordPress utilise la fonction mail() de PHP, qui envoie les messages directement depuis le serveur web sans authentification. La plupart des serveurs de messagerie rejettent ou classent en spam ces envois car ils ne peuvent pas vérifier l’identité de l’expéditeur. Configurer SMTP dans WordPress résout ce problème en passant par un serveur d’envoi authentifié.
Est-il sécurisé de stocker le mot de passe SMTP dans wp-config.php ?
C’est la méthode la plus sûre disponible nativement dans WordPress, sans recourir à un plugin. Le fichier wp-config.php est protégé contre l’accès HTTP direct par les règles d’Apache et Nginx incluses dans WordPress. Il s’agit d’ailleurs de la même approche que WordPress utilise pour stocker le mot de passe de base de données.
Quelle est la différence entre le port 465 et le port 587 pour SMTP ?
Le port 465 utilise SSL/SMTPS : la connexion est chiffrée dès l’établissement. Le port 587 utilise STARTTLS : la connexion commence en clair puis bascule automatiquement en mode chiffré. Les deux sont sécurisés ; le choix dépend des paramètres imposés par votre prestataire SMTP.
Peut-on configurer SMTP WordPress sans thème enfant ?
Techniquement oui, mais ce n’est pas recommandé. Sans thème enfant, le code ajouté dans functions.php sera écrasé à chaque mise à jour du thème. La bonne pratique est de toujours passer par un thème enfant, ou d’utiliser une extension de gestion de snippets comme WPCode (anciennement Code Snippets), qui permet d’ajouter du code PHP de manière sécurisée sans toucher aux fichiers du thème.
Mes e-mails arrivent toujours en spam malgré la configuration SMTP, que faire ?
La configuration SMTP seule ne suffit pas toujours. Vérifiez que votre domaine dispose bien des enregistrements DNS SPF, DKIM et DMARC correctement configurés. Assurez-vous également que l’adresse e-mail expéditrice correspond bien au domaine déclaré dans votre enregistrement SPF. Si vous utilisez Brevo, pensez à authentifier votre domaine d’envoi dans leur interface pour activer la signature DKIM.