Utiliser PHPMailer pour envoyer des emails en PHP
Utiliser PHPMailer pour envoyer des emails en PHP
📖 Introduction
L’envoi d’emails en PHP peut rapidement devenir complexe lorsque l’on s’appuie uniquement sur la fonction native mail(). Problèmes de configuration serveur, absence de support SMTP avancé, gestion limitée des pièces jointes ou des encodages : les limitations sont nombreuses et peuvent nuire à la fiabilité des envois.
PHPMailer est une bibliothèque largement utilisée qui permet de contourner ces contraintes en offrant une abstraction complète et robuste de l’envoi d’emails. Elle prend en charge l’authentification SMTP, le chiffrement (TLS/SSL), les emails HTML, les pièces jointes, ainsi qu’un système de débogage détaillé.
Dans cet article, nous allons voir comment installer PHPMailer et l’utiliser pour envoyer un email simple via SMTP, à l’aide d’un exemple concret et facilement réutilisable.
📦 Installation / Prérequis / Dépendances
Pour utiliser PHPMailer, plusieurs méthodes sont possibles. La plus courante consiste à l’installer via Composer, mais il est également possible de l’utiliser manuellement.
Ressources officielles :
Installation via Composer (recommandée)
composer require phpmailer/phpmailer
Puis inclure l’autoloader :
require_once './vendor/autoload.php';
Installation manuelle
Téléchargez l’archive ZIP depuis GitHub, puis incluez les fichiers nécessaires :
require_once './PHPMailer/Exception.php';
require_once './PHPMailer/PHPMailer.php';
require_once './PHPMailer/SMTP.php';
🚀 Utilisation
Le code suivant présente un exemple simple d’utilisation de PHPMailer pour envoyer un email via SMTP.
Initialisation de PHPMailer
Nous commençons par importer les classes nécessaires et instancier l’objet PHPMailer.
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require_once './PHPMailer/Exception.php';
require_once './PHPMailer/PHPMailer.php';
require_once './PHPMailer/SMTP.php';
// reuqire_one "./vendor/autoload.php" // Pour composer
$mail = new PHPMailer(true);
Configuration SMTP
Nous configurons ensuite le mode SMTP, le serveur utilisé et les options de sécurité. Dans cet exemple, le débogage interne de PHPMailer est activé.
try {
$mail->SMTPDebug = 2; // 0 pour désactiver le debug
$mail->isSMTP();
$mail->SMTPSecure = 'tls';
$mail->Host = "smtp.office365.com"; // Serveur SMTP (ex: Hotmail)
// $mail->Host = "smtp.gmail.com"; // Pour Gmail
// $mail->Host = "ssl0.ovh.net"; // Pour OVH
$mail->Port = 587;
// $mail->Port = 465; // Pour OVH
} catch (Exception $e) {
echo "error";
var_dump($e)
}
Authentification
Pour pouvoir envoyer des emails, une authentification SMTP est requise. Renseignez ici les identifiants de votre boîte mail.
try {
//...code
$mail->SMTPAuth = true;
$mail->Username = "myMail@hotmail.com";
$mail->Password = "myPassword";
} catch (Exception $e) {
echo "error";
var_dump($e)
}
Composition et envoi de l’email
Enfin, nous définissons le contenu du message et procédons à l’envoi.
try {
//...code
// $mail->isHTML(); // Pour envoyer un email HTML
$mail->setFrom("myMail@hotmail.com", "myMail");
$mail->addAddress("SendTo@hotmail.com");
$mail->Subject = "Test Email";
$mail->Body = "Hello world";
$mail->send();
} catch (Exception $e) {
echo "error";
var_dump($e)
}
Info
Il est possible d’envoyer des emails HTML et CSS avec PHPMailer. Toutefois, les clients de messagerie imposent de nombreuses restrictions.
Le HTML/CSS supporté est souvent limité et repose sur des standards anciens. Il est recommandé de tester le rendu sur plusieurs clients (Gmail, Outlook, etc.).
🎯 Conclusion
PHPMailer constitue une solution fiable et éprouvée pour l’envoi d’emails en PHP, en particulier lorsqu’un envoi via SMTP sécurisé est requis. Son API claire, sa compatibilité avec les principaux fournisseurs de messagerie et ses capacités de débogage en font un outil de choix pour les projets professionnels.
Bien que l’exemple présenté ici soit volontairement simple, PHPMailer permet d’aller beaucoup plus loin : envoi d’emails HTML complexes, gestion des pièces jointes, adresses multiples, réponses automatiques ou encore intégration dans des applications plus larges.
Comme pour toute fonctionnalité liée aux emails, il est recommandé de tester soigneusement la configuration SMTP et d’éviter toute exposition d’identifiants sensibles, notamment dans des dépôts publics. Utilisé correctement, PHPMailer simplifie considérablement une tâche souvent source de problèmes en PHP.
📜 Code
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require_once './PHPMailer/Exception.php';
require_once './PHPMailer/PHPMailer.php';
require_once './PHPMailer/SMTP.php';
$mail = new PHPMailer(true);
try {
$mail->SMTPDebug = 2; // 0 pour désactiver le debug
$mail->isSMTP();
$mail->SMTPSecure = 'tls';
$mail->Host = "smtp.office365.com"; // Serveur SMTP (ex: Hotmail)
// $mail->Host = "smtp.gmail.com"; // Pour Gmail
// $mail->Host = "ssl0.ovh.net"; // Pour OVH
$mail->Port = 587;
// $mail->Port = 465; // Pour OVH
$mail->SMTPAuth = true;
$mail->Username = "myMail@hotmail.com";
$mail->Password = "myPassword";
// $mail->isHTML(); // Pour envoyer un email HTML
$mail->setFrom("myMail@hotmail.com", "myMail");
$mail->addAddress("SendTo@hotmail.com");
$mail->Subject = "test2";
$mail->Body = "test";
$mail->send();
echo "OK";
} catch (Exception $e) {
echo "error";
}
?>