Introduction
PHPMailer est une bibliothèque PHP largement utilisée pour envoyer des e‑mails via SMTP (Simple Mail Transfer Protocol). Par rapport à la fonction native mail(), PHPMailer facilite l'authentification, le chiffrement (STARTTLS / SMTPS), l'ajout de pièces jointes et la remontée d'erreurs détaillées. Ce guide explique, étape par étape, comment préparer un compte cPanel et intégrer PHPMailer dans une application PHP personnalisée.
Prérequis
- Une adresse e‑mail opérationnelle sur votre hébergement (ex.
nom@votredomaine.tld). Voir « Comment créer une adresse email sur mon compte cPanel? » (article cPanel). - Identifiants SMTP : hôte (hostname), port (généralement 587 ou 465), nom d'utilisateur (souvent l'adresse e‑mail complète) et mot de passe.
- Enregistrements DNS pour la délivrabilité : SPF et DKIM activés pour le domaine. Utilisez l'outil Email Deliverability de cPanel pour diagnostiquer (article cPanel) et voyez aussi SPF et DKIM.
- PHP (version moderne recommandée) avec extensions utiles :
openssl(pour TLS),mbstring, etc. Vérifiez la version et extensions via MultiPHP/Selector dans cPanel si nécessaire. - Moyen d'installer PHPMailer : Composer (recommandé) ou installation manuelle (upload des fichiers
src/etvendor/si vous installez localement).
Résumé rapide des étapes
- Créer la boîte e‑mail dans cPanel.
- Vérifier SPF/DKIM et le routage des e‑mails.
- Installer PHPMailer (Composer ou manuel).
- Ajouter le script PHP de test et ajuster les paramètres SMTP.
- Tester, vérifier la remise et dépanner si nécessaire.
Étape 1 — Créer la boîte e‑mail dans cPanel
Si vous n'avez pas encore d'adresse dédiée pour l'envoi, créez‑en une dans Comptes e‑mail de cPanel. Conservez l'adresse et le mot de passe : vous en aurez besoin pour l'authentification SMTP.
Étape 2 — Vérifier la délivrabilité et le routage
Avant les envois réguliers, vérifiez que SPF et DKIM sont configurés pour votre domaine : cela réduit les risques que vos messages soient classés comme spam. Dans cPanel, ouvrez Email Deliverability pour obtenir un diagnostic et les enregistrements recommandés.
Si vous utilisez un service SMTP externe (Gmail, Office365, Mailgun, etc.), suivez les consignes de ce fournisseur (ports, chiffrement, app‑passwords ou OAuth2). Assurez‑vous aussi que les enregistrements MX et le routage e‑mail correspondent au fournisseur choisi.
Étape 3 — Installer PHPMailer
Composer est la méthode recommandée. Si Composer n'est pas disponible sur le serveur, installez PHPMailer localement puis téléversez le dossier vendor/ ou utilisez l'installation manuelle.
Option A — Avec Composer (recommandé)
- Vérifiez que Composer est disponible (via SSH ou Terminal cPanel) :
composer --version - Depuis le répertoire de votre application (ex.
public_html/monapp/) exécutez :composer require phpmailer/phpmailer - Sur le serveur, incluez ensuite l'autoload dans vos scripts :
require __DIR__ . '/vendor/autoload.php';
Si vous ne pouvez pas exécuter Composer côté serveur : lancez composer require phpmailer/phpmailer sur votre machine locale, puis téléversez le dossier vendor/ et vos fichiers applicatifs sur le serveur (FTP ou Gestionnaire de fichiers).
Option B — Installation manuelle
- Téléchargez l'archive PHPMailer depuis le dépôt officiel (archive ZIP), extrayez le dossier
src/. - Placez les répertoires nécessaires (
src/) dans un dossier de votre application et incluez les fichiers directement :require 'PHPMailer/src/Exception.php'; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; - Si vous avez créé localement le dossier
vendor/, utilisez le Gestionnaire de fichiers de cPanel ou FTP pour téléverser (ex. téléversez le .zip et extrayez côté serveur).
vendor/ si vous installez localement.Étape 4 — Exemple de script PHP (configuration SMTP)
Exemple minimal (PHPMailer v6+, installation via Composer) — adaptez les valeurs Host, Username, Port et Password :
<?php
require __DIR__ . '/vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
$mail = new PHPMailer(true);
try {
// Paramètres SMTP
$mail->isSMTP();
$mail->Host = 'smtp.votredomaine.tld';
$mail->SMTPAuth = true;
$mail->Username = 'nom@votredomaine.tld';
$mail->Password = getenv('SMTP_PASS'); // ou récupéré depuis un fichier de config hors public_html
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // ou PHPMailer::ENCRYPTION_SMTPS
$mail->Port = 587; // 587 (STARTTLS) ou 465 (SMTPS)
// Destinataires et contenu
$mail->setFrom('nom@votredomaine.tld', 'Nom affiché');
$mail->addAddress('destinataire@example.com', 'Nom destinataire');
$mail->isHTML(true);
$mail->Subject = 'Sujet du message';
$mail->Body = 'Bonjour, ceci est un message de test.
';
$mail->AltBody = 'Bonjour, ceci est un message de test.';
$mail->send();
echo 'Message envoyé';
} catch (Exception $e) {
// n'affichez pas les mots de passe en production
error_log('PHPMailer Error: ' . $mail->ErrorInfo);
echo 'Erreur d\'envoi : ' . $mail->ErrorInfo;
}
Options utiles pour le débogage
Pour obtenir la trace SMTP (ne pas activer en production) :
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // sorties détaillées
$mail->Debugoutput = function($str, $level) {
error_log('PHPMailer SMTP: ' . $str);
};
Cas particulier : certificats TLS/SSL en développement
Si vous obtenez des erreurs liées aux certificats sur un environnement de test, vous pouvez (temporairement) autoriser un certificat auto‑signé. Ne laissez jamais ceci en production :
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
];
Étape 5 — Tester et vérifier la remise
- Lancez le script depuis le navigateur (ex.
https://votredomaine.tld/monapp/test-mail.php) ou en CLI (php test-mail.php). - Si l'envoi échoue, activez le débogage PHPMailer et consultez les logs PHP/serveur (erreurs et traces SMTP).
- Utilisez l'outil Track Delivery de cPanel pour suivre le parcours du message et lire les codes d'erreur renvoyés par les serveurs distants.
Dépannage fréquent (raccourci)
- "SMTP connect() failed" / Connexion refusée
- Vérifiez
Host,PortetSMTPSecure(STARTTLS sur 587, SMTPS sur 465). - Test de connectivité depuis votre poste :
telnet smtp.votredomaine.tld 587 # ou openssl s_client -starttls smtp -connect smtp.votredomaine.tld:587 - Sur hébergement mutualisé, certaines connexions SMTP sortantes peuvent être restreintes : contactez le support si nécessaire.
- Vérifiez
- Authentification impossible
- Vérifiez que le nom d'utilisateur est l'adresse e‑mail complète et que le mot de passe est correct (pas d'espace en fin de chaîne).
- Pour Gmail/Office365, activez un mot de passe d'application ou OAuth2 si le fournisseur l'exige.
- Rejet côté destinataire / message classé spam
- Consultez le code d'erreur renvoyé par le serveur destinataire (via Track Delivery ou logs SMTP).
- Assurez‑vous que SPF et DKIM sont correctement publiés et que votre enregistrement DMARC est adapté.
- Erreur de certificat TLS
- Vérifiez que le serveur SMTP propose une chaîne de certificats valide. En dev uniquement, vous pouvez assouplir la vérification (voir SMTPOptions), mais corrigez la chaîne en production.
- Pièces jointes manquantes
- Vérifiez le chemin fichiers, permissions et les limites d'upload imposées par l'hébergeur.
Bonnes pratiques
- Ne stockez pas de mots de passe en clair dans un script public. Placez la configuration hors de
public_htmlou utilisez des variables d'environnement (getenv()). - Activez et vérifiez SPF et DKIM pour améliorer la délivrabilité.
- Désactivez le débogage SMTP détaillé en production (il peut contenir des mots de passe).
- Pour des envois importants (newsletters, notifications massives), préférez un service d'envoi dédié (SMTP relay) qui gère quotas et réputation.
Limitations et points à vérifier
- Sur les offres mutualisées, l'envoi sortant direct sur le port 25 ou d'autres ports peut être bloqué ou limité ; vérifiez avec l'hébergeur.
- Certains fournisseurs exigent OAuth2 (Gmail, Office365) ; l'intégration OAuth2 demande des étapes supplémentaires (bibliothèques et configuration).
- Les quotas d'envoi (messages/heure) peuvent s'appliquer au niveau du serveur : vérifiez la politique de votre hébergeur si vous prévoyez un volume élevé.
Checklist avant mise en production
- Boîte e‑mail créée et identifiants validés.
- SPF/DKIM configurés et diagnostic OK.
- PHPMailer installé et l'autoload fonctionne.
- Script testé en préproduction ; logs de débogage sauvegardés hors site public.
- Mécanisme sécurisé pour modifier/faire tourner les mots de passe (rotation).
Ressources internes utiles
- Comment créer une adresse email sur mon compte cPanel?
- Comment utiliser la fonctionnalité Email Deliverability dans cPanel ?
- SPF et DKIM : Comment améliorer la réputation de mes emails envoyés sur cPanel?
- Suivre la remise : Comment suivre vos Emails dans cPanel
Si un problème persiste, ouvrez un ticket depuis votre espace client en joignant la sortie de débogage PHPMailer (attention : supprimez les mots de passe avant partage) et indiquez l'heure du test afin que le support puisse consulter les traces serveur.
Documentation consultée le 17 octobre 2026. Les outils peuvent varier selon votre hébergement.