Pour commencer

Avant toute chose, vous allez devoir télécharger PHPMailer. Une fois l'archive décompressée, vous trouverez plusieurs fichiers dont class.phpmailer.php. C'est celui-ci qui nous intéressera. Il contient toute la définition de la classe PHPMailer. Tout code faisant appel à cette classe devra donc commencer par les instructions suivantes :

<?php
   require('class.phpmailer.php');
?>

Un premier mail

Nous allons tenter d'envoyer un premier e-mail grâce à cette classe. Vous allez tout de suite comprendre à quel point il est simple de l'utiliser.

<?php
 
   // On va chercher la définition de la classe
   require('class.phpmailer.php');
 
   // On créé une nouvelle instance de la classe
   $mail = new PHPMailer();
 
   // De qui vient le message, e-mail puis nom
   $mail->From = "moi@vous.la";
   $mail->FromName = "Nom Prénom";
 
   // Définition du sujet/objet
   $mail->Subject = "Un mail envoyé avec PHPMailer!";
 
   // On définit le corps du message
   $mail->Body = "Bonjour!";
 
   // Il reste encore à ajouter au moins un destinataire
   // (ou plus, par plusieurs appel à cette méthode)
   $mail->AddAddress("hey@ho.com", "HeyHo");
 
   // Pour finir, on envoi l'e-mail
   $mail->send();
 
?>

Dans cette exemple, nous avons envoyé un message simple en format texte. Comme vous pouvez le voir, l'envoi est tout de suite plus clair. Il n'est pas nécessaire de créer les entêtes du message. De plus, les noms d'attributs et méthodes sont très clairs.

Un mail au format HTML

On va maintenant voir à quel point cette classe est intéressante. Avec un exemple d'envoi d'e-mail au format HTML. Là encore, rien de bien compliqué, et c'est justement tout l'intérêt de cette classe!

<?php
 
   // On va chercher la définition de la classe
   require('class.phpmailer.php');
 
   // On créé une nouvelle instance de la classe
   $mail = new PHPMailer();
 
   // De qui vient le message, e-mail puis nom
   $mail->From = "moi@vous.la";
   $mail->FromName = "Nom Prénom";
 
   // Définition du sujet/objet
   $mail->Subject = "Un mail envoyé avec PHPMailer!";
 
   // On lit le contenu d'une page html
   $body = file_get_contents('page_mail.html');
 
   // On définit le contenu de cette page comme message
   $mail->MsgHTML($body);
 
   // On pourra définir un message alternatif pour les boîtes de
   // messagerie n'acceptant pas le html
   $mail->AltBody = "Ce message est au format HTML, votre messagerie n'accepte pas ce format.";
 
   // Il reste encore à ajouter au moins un destinataire
   $mail->AddAddress("hey@ho.com", "HeyHo");
 
   // Pour finir, on envoi l'e-mail
   $mail->send();
 
?>

Notez qu'on ne se pose toujours pas la question de la formation des entêtes. On pourra tout de même se poser la question du jeu de caractères (charset). Par défaut, il est définit à ISO-8859-1. Mais il est tout à fait possible de le changer avec l'instruction suivante :

<?php
   // Pour le passer en UTF-8 par exemple :
   $mail->CharSet = 'UTF-8';
?>

Un mail avec pièce jointe

Voilà une question très fréquente dans les forums de programmation PHP, comment envoyer un e-mail avec une pièce jointe? PHPMailer propose là encore une solution simple et efficace. Imaginons que l'on souhaite envoyer notre CV par e-mail :

<?php
 
   // On va chercher la définition de la classe
   require('class.phpmailer.php');
 
   // On créé une nouvelle instance de la classe
   $mail = new PHPMailer();
 
   // De qui vient le message, e-mail puis nom
   $mail->From = "moi@vous.la";
   $mail->FromName = "Nom Prénom";
 
   // Définition du sujet/objet
   $mail->Subject = "Un mail envoyé avec PHPMailer!";
 
   // On définit le corps du message
   $mail->Body = "Bonjour!
Veuillez trouver ci-joint mon CV.
 
Cordialement,
Machin truc.";
 
   // Il reste encore à ajouter au moins un destinataire
   $mail->AddAddress("recrutement@ho.com", "HeyHo");
 
   // On met notre CV en pièce jointe
   $mail->AddAttachment('./CV.pdf');
 
   // Pour finir, on envoi l'e-mail
   $mail->send();
 
?>

Vous remarquerez encore une fois que l'envoi de pièce jointe est considérablement simplifié en utilisant PHPMailer.

Le mot de la fin

Pour aller plus loin, rien de mieux que de vous rendre sur le site officiel de PHPMailer, en anglais. Vous y trouverez une documentation très complète sur l'utilisation de cette classe et les différentes possibilités qui vous sont offertes.

Ce qui est certain, c'est qu'il ne faut pas se priver de l'utiliser. Vous gagnerez du temps dans vos développements.