Bibliothèque PHPMailer : envoi professionnel d'email en PHP
L'envoi de courriels est l'une des fonctions clés de toute application web moderne. La fonction intégrée PHP mail() s'avère souvent insuffisamment flexible et sécurisée : elle ne prend pas en charge l'authentification SMTP, le chiffrement TLS/SSL, l'envoi d'emails HTML avec pièces jointes et ne fonctionne pas toujours correctement sur les hébergements mutualisés. La solution à ces problèmes est la bibliothèque PHPMailer, qui est devenue la norme de facto pour l'envoi d'emails en PHP.
Qu'est-ce que PHPMailer ?
PHPMailer est une bibliothèque puissante et facile à utiliser pour envoyer des courriels depuis des scripts PHP. Elle prend en charge :
- L'envoi via un serveur SMTP (Gmail, Yandex, Mail.ru, messagerie d'entreprise) ;
- Le chiffrement TLS et SSL ;
- Les emails HTML avec pièces jointes (images, PDF, documents) ;
- L'encodage UTF-8 et le fonctionnement avec toutes les langues (russe, chinois, etc.) ;
- Le texte alternatif (plain-text) pour les clients de messagerie sans HTML ;
- La signature DKIM et SPF pour la protection contre le spam ;
- Le fonctionnement via sendmail local ou mail() intégré en tant que solution de repli.
Installation de PHPMailer
La méthode la plus simple est via Composer. Dans le terminal, exécutez la commande à la racine de votre projet :
composer require phpmailer/phpmailerSi Composer n'est pas utilisé, vous pouvez télécharger l'archive depuis GitHub et inclure les fichiers manuellement :
require_once '/chemin/vers/PHPMailer/src/PHPMailer.php';require_once '/chemin/vers/PHPMailer/src/SMTP.php';require_once '/chemin/vers/PHPMailer/src/Exception.php';Exemple de base d'envoi d'email via SMTP Gmail
Examinons la configuration minimale pour envoyer un email via le serveur SMTP de Gmail. Attention : pour que cela fonctionne, vous devrez créer un mot de passe d'application dans les paramètres de votre compte Google (ou utiliser l'option moins sécurisée « accès aux applications moins sécurisées »).
<?phpuse PHPMailer\\PHPMailer\\PHPMailer;use PHPMailer\\PHPMailer\\SMTP;use PHPMailer\\PHPMailer\\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try { // Paramètres du serveur $mail->SMTPDebug = SMTP::DEBUG_OFF; // Débogage (0 - désactivé, 2 - détaillé) $mail->isSMTP(); // Utiliser SMTP $mail->Host = 'smtp.gmail.com'; // Serveur SMTP $mail->SMTPAuth = true; // Activer l'authentification $mail->Username = 'your-email@gmail.com'; // Identifiant SMTP $mail->Password = 'your-app-password'; // Mot de passe SMTP (mot de passe d'application) $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL $mail->Port = 465; // Port pour SSL (587 pour TLS)
// Expéditeur et destinataire $mail->setFrom('from@example.com', 'Nom de l\'expéditeur'); $mail->addAddress('to@example.com', 'Nom du destinataire'); // Vous pouvez en ajouter plusieurs $mail->addReplyTo('reply@example.com', 'Répondre');
// Pièces jointes (optionnel) $mail->addAttachment('/chemin/vers/fichier.pdf', 'Nom.pdf');
// Contenu de l'email $mail->isHTML(true); // Format HTML $mail->Subject = 'Bonjour de PHPMailer !'; $mail->Body = '<b>Ceci est un email HTML</b> avec du texte en russe.'; $mail->AltBody = 'Ceci est un texte alternatif pour les clients de messagerie sans HTML.';
$mail->send(); echo 'Email envoyé avec succès';} catch (Exception $e) { echo "Erreur : {$mail->ErrorInfo}";}?>Envoi via Yandex Mail
Pour Yandex Mail, les paramètres changent légèrement. Important : dans les paramètres de la boîte aux lettres, vous devez autoriser l'accès via le protocole IMAP/SMTP et créer un mot de passe d'application (si l'authentification à deux facteurs est activée).
$mail Aussi dans la bibliothèque
SwiftConfig: Gestion de configuration d'applications en Swift
Travailler avec XML en C# (.NET) : Guide complet pour débutants
Client OAuth pour C# (.NET) : implémentation de l'autorisation via des services tiers