Envoi d'email en PHP : PHPMailer, SwiftMailer et mail() — guide complet

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

Envoi d'email en PHP : aperçu des bibliothèques et outils



L'envoi d'emails est une partie essentielle de toute application web : inscription des utilisateurs, réinitialisation de mot de passe, notifications, campagnes marketing. En PHP, il existe plusieurs façons d'envoyer des emails : de la fonction intégrée mail() aux bibliothèques spécialisées comme PHPMailer et SwiftMailer. Dans cet article, nous analyserons en détail chaque outil, ses avantages, ses inconvénients et fournirons des exemples pratiques de code.



1. La fonction intégrée mail()



La méthode la plus simple consiste à utiliser la fonction native PHP mail(). Elle ne nécessite pas l'installation de bibliothèques supplémentaires, mais présente des limitations importantes.



Syntaxe

mail($to, $subject, $message, $headers, $parameters);


Exemple d'envoi d'un email texte simple

<?php$to = 'user@example.com';$subject = 'Salutation';$message = 'Bonjour ! Ceci est un email de test.';$headers = 'From: noreply@pythonlib.ru' . "\\r" .           'Reply-To: support@pythonlib.ru' . "\\r" .           'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) { echo 'Email envoyé.';} else { echo 'Erreur d\\'envoi.';}?>


Inconvénients de mail()

  • Dépend de la configuration du serveur (sendmail, postfix, etc.) — souvent classé comme spam.
  • Ne prend pas en charge les emails HTML et les pièces jointes sans création manuelle des en-têtes MIME.
  • Absence de support pour l'authentification SMTP.
  • Difficile de déboguer les erreurs.


En raison de ces limitations, il est recommandé d'utiliser des bibliothèques spécialisées pour les projets sérieux.



2. PHPMailer — la bibliothèque la plus populaire



PHPMailer est une bibliothèque puissante et pratique pour envoyer des emails en PHP. Elle prend en charge le HTML, les pièces jointes, l'authentification SMTP, le chiffrement TLS/SSL et de nombreuses autres fonctionnalités.



Installation

composer require phpmailer/phpmailer

Ou téléchargez manuellement depuis GitHub.



Exemple d'envoi d'un email HTML via SMTP Gmail

<?phpuse PHPMailer\\PHPMailer\\PHPMailer;use PHPMailer\\PHPMailer\\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try { // Paramètres du serveur $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'your-email@gmail.com'; $mail->Password = 'your-app-password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;

// Expéditeur et destinataire $mail->setFrom('from@example.com', 'Votre nom'); $mail->addAddress('user@example.com', 'Destinataire');

// Pièces jointes $mail->addAttachment('/path/to/file.pdf', 'document.pdf');

// Contenu $mail->isHTML(true); $mail->Subject = 'Bonjour de PHPMailer'; $mail->Body = '<h1>Titre</h1><p>Ceci est un email <b>HTML</b>.</p>'; $mail->AltBody = 'Version texte pour les clients email sans HTML';

$mail->send(); echo 'Email envoyé.';} catch (Exception $e) { echo "Erreur : {$mail->ErrorInfo}";}?>


Avantages de PHPMailer

  • API simple et claire.
  • Prise en charge de tous les protocoles de messagerie modernes.
  • Encodage automatique des pièces jointes.
  • Bonne documentation et grande communauté.


3. SwiftMailer — une alternative flexible



SwiftMailer est une autre bibliothèque populaire qui fournit une interface orientée objet pour l'envoi d'emails. Contrairement à PHPMailer, elle utilise le concept de « transports » (Transport) et de « messages » (Message).



Installation

composer re                    

Recommendations