Envoyer des emails avec PHPMailer : voici comment faire !

PHPMailer est un framework qui assure l’envoi d’emails via PHP. Il est surtout utilisé pour les formulaires de contact sur les sites Web, même s’il permet également d’envoyer des emails privés.

Hosted Exchange avec IONOS

Profitez de la meilleure solution mail au monde ainsi que d’un hébergement sécurisé avec IONOS ! 

Boîte email 50 Go
Domaine inclus
Assistance 24/7

Qu’est-ce que PHPMailer ?

PHPMailer est une extension de messagerie pour PHP mise à disposition par la communauté. À la différence de la commande Mail, qui est implémentée dans PHP depuis le début, la probabilité que les emails envoyés avec PHPMailer atterrissent dans le dossier Spam est beaucoup plus faible. Tout simplement car l’envoi des emails générés par PHPMailer se fait par SMTP, c’est-à-dire « Simple Mail Transfer Protocol », qui permet de transmettre des courriels via Internet.

À quoi sert PHPMailer ?

L’utilisation de PHPMailer est un peu plus compliquée que celle des fournisseurs de messagerie ou des programmes de messagerie intégrés à l’ordinateur. Il est donc normal de se demander s’il vaut la peine d’utiliser PHPMailer. Cependant, ce framework PHP facilite la création de réponses automatisées, sur une boutique en ligne par exemple. PHPMailer est également idéal pour les formulaires de contact d’un site Web.

Conditions requises pour pouvoir utiliser PHPMailer

Pour pouvoir travailler avec PHPMailer, vous avez tout d’abord besoin d’un serveur SMTP. Vous pouvez choisir d’utiliser le serveur de messagerie d’un fournisseur d’accès ou d’installer votre propre serveur. De plus, pour l’installation de l’extension PHP, il est recommandé d’utiliser un gestionnaire de paquets PHP comme Composer.

Conseil

Une autre condition préalable à l’utilisation de PHPMailer est de maîtriser les bases de PHP. Si vous avez encore des difficultés à ce niveau, notre tutoriel PHP pour débutants vous aidera !

Installation de PHPMailer : étape par étape

Étape 1 : télécharger la dernière version de PHPMailer

Téléchargez la dernière version de PHPMailer. Le téléchargement peut être effectué à l’aide du gestionnaire de paquets ou manuellement depuis GitHub.

Variante 1 : téléchargement à l’aide de Composer

Si vous avez installé le gestionnaire de paquets Composer, utilisez simplement la commande :

composer require phpmailer/phpmailer

Attention : si vous avez installé PHPMailer avec Composer, vous devez intégrer Composer dans votre code PHP afin de pouvoir envoyer des emails.

Pour cela, la ligne de code suivante s’impose :

require_once "vendor/autoload.php";

Le mot-clé « require_once » veille à ce que Composer ne soit intégré qu’une seule fois. Le contraire pourrait entraîner un comportement imprévisible ou des erreurs de programme. L’installation à l’aide de Composer est maintenant terminée.

Variante 2 : téléchargement direct depuis GitHub

Il est également possible de télécharger manuellement les fichiers sources de PHPMailer en cliquant sur le bouton « Clone or download » dans le dépôt GitHub correspondant.

Étape 2 : extraire les fichiers

Si vous avez téléchargé manuellement le code source de PHPMailer, vous devez ouvrir le fichier ZIP. Pour cela, choisissez l’endroit où vous souhaitez installer PHPMailer. Ici aussi, vous devez d’abord intégrer PHPMailer dans votre script. En partant du principe que vous avez décompressé les fichiers PHPMailer dans un répertoire appelé PHPMailer, utilisez les lignes de code suivantes :

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/* Classe de traitement des exceptions et des erreurs */
require 'C:\PHPMailer\src\Exception.php';
/* Classe-PHPMailer */
require 'C:\PHPMailer\src\PHPMailer.php';
/* Classe SMTP nécessaire pour établir la connexion avec un serveur SMTP */
require 'C:\PHPMailer\src\SMTP.php';
$email = new PHPMailer(TRUE);

Envoyer des emails avec PHPMailer : étape par étape

Étape 1 : intégrer les espaces de noms

Pour accéder facilement à PHPMailer, assurez-vous d’abord que les espaces de noms sont correctement intégrés. Pour cela, on utilise la déclaration use. Ainsi, votre code doit contenir les lignes suivantes :

<!--?php</codesnippet-->
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

Vous pouvez maintenant accéder aux différentes classes en utilisant le nom après le dernier slash.

Étape 2 : intercepter les erreurs

Même si PHPMailer est une variante très fiable pour l’envoi d’emails, des erreurs peuvent survenir de temps à autre. Pour éviter que les données sensibles de votre serveur de messagerie ne soient transmises aux utilisateurs sous la forme d’un message d’erreur, il est conseillé d’entourer l’envoi d’emails à l’aide d’une instruction Try-Catch :

try {
    // Tentative de création d’une nouvelle instance de la classe PHPMailer
    $mail = new PHPMailer (true);
// (…)
} catch (Exception $e) {
        echo "Mailer Error: ".$mail->ErrorInfo;
}

Étape 3 : authentification avec SMTP

Pour pouvoir utiliser PHPMailer, vous devez ensuite vous authentifier via SMTP. Pour cela, entrez l’adresse de votre serveur de messagerie, le protocole correspondant (soit TLS/SSL, soit SMTP), le port, votre nom d’utilisateur et votre mot de passe. Le protocole et le port utilisés dépendent de votre fournisseur de messagerie. Les données du serveur peuvent être facilement consultées sur son site Web.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Informations personnelles
$mail->Host = "smtp.domaine.fr";
$mail->Port = "587";
$mail->Username = "nom.nomdefamille@domaine.fr";
$mail->Password = "motdepasse4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

Étape 4 : indiquer les destinataires de l’email

Vous pouvez maintenant indiquer les destinataires de votre email dans le script.

// Expéditeur
$mail->setFrom('info@exemple.fr', 'nom');
// Destinataire dont le nom peut également être indiqué en option
$mail->addAddress('info@exemple.fr', 'nom');
// Copie
$mail->addCC('info@exemple.fr');
// Copie cachée
$mail->addBCC('info@exemple.fr', 'nom');

Étape 5 : ajouter le contenu de l’email

Le plus important ne doit bien sûr pas manquer : le contenu de votre email. Ce contenu se compose généralement d’un objet et d’un texte, en version HTML ou non. Important : les logiciels plus anciens ne sont pas forcément compatibles avec le standard HTML5 actuel, il peut donc être intéressant de concevoir votre email uniquement en HTML.

PHPMailer vous permet également d’envoyer facilement des pièces jointes. Vous pouvez utiliser La fonction addAttachment pour cela. Il devient alors possible de transférer des images, de la musique, des documents, des vidéos ou des GIF. Vous pouvez également renommer vos pièces jointes à l’aide d’un deuxième paramètre optionnel.

$mail->isHTML(true);
// Betreff
$mail->Subject = 'Objet de votre email';
// HTML-Inhalt
$mail->Body = 'Le texte de votre email en HTML. Il est également possible des mettre des éléments en <b>gras</b>, par exemple.';
$mail->AltBody = 'Le texte comme simple élément textuel';
// Ajouter une pièce jointe
$mail->addAttachment("/home/user/Desktop/image.png", "image.png");

Étape 6 : utiliser le codage correct des caractères

Dans les pays francophones, il est conseillé d’activer UTF-8 dans PHPMailer en raison des différents accents, afin qu’aucune erreur d’affichage n’apparaisse, notamment lors de l’utilisation de différentes pièces jointes. Pour ce faire, insérez les lignes de code suivantes dans votre script PHP :

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';

Étape 7 : envoyer l’email

La dernière étape consiste à envoyer votre email. Pour cela, utilisez la commande :

$mail-&gt;send();

Assurez-vous de placer tout le code montré ici jusqu’à cette demande d’envoi dans le bloc d’instructions Try de votre script, afin que les éventuelles erreurs soient interceptées comme décrit.

Exemple de code pour l’envoi d’un email

Vous trouverez ici un récapitulatif de tout le code dont vous avez besoin pour envoyer un email avec une image en pièce jointe au destinataire de votre choix à l’aide de PHPMailer :

<!--?php</codesnippet-->
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
try {
        // Créer une instance de classe PHPMailer
        $mail = new PHPMailer($debug);
        if ($debug) {
                // donne un journal détaillé
                $mail->SMTPDebug = PHPMailer\PHPMailer\SMTP::DEBUG_SERVER; }
        }
        // Authentification via SMTP
        $mail->isSMTP();
        $mail->SMTPAuth = true;
        // Connexion
        $mail->Host = "smtp.domaine.fr";
        $mail->Port = "587";
        $mail->Username = "nom.nomdefamille@domaine.fr";
        $mail->Password = "motdepasse4321";
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail->addAttachment("/home/user/Desktop/image.png", "image.png");
     $mail->CharSet = 'UTF-8';
     $mail->Encoding = 'base64';
        $mail->isHTML(true);
        $mail->Subject = 'Objet de votre email';
     $mail->Body = 'Le texte de votre email en HTML. Il est également possible des mettre des éléments en <b>gras</b>, par exemple.';
     $mail->AltBody = 'Le texte comme simple élément textuel';
        $mail->send();
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$mail->ErrorInfo;
}

Attendez ! Nous avons quelque chose pour vous !
Votre messagerie professionnelle

Créez une adresse personnalisée
Affichez votre sérieux sur Internet
Nom de domaine inclus
À partir d' 1 € HT/mois (1,20 € TTC)
Conseiller personnel inclus !