Envoi d'email en PHP : Guide complet de la bibliothèque PHPMailer

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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/phpmailer

Si 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                    

Recommendations