Envoyer des mails avec PHPMailer

phpmailer

Envoyer un simple e-mail en PHP au format texte n’a rien de compliqué. Toutefois, lorsqu’il s’agit de l’envoyer au format HTML, ou encore d’y joindre un fichier, certains si perdent. PHPMailer est une librairie qui apporte une solution simple et efficace à ces problèmes. Je vous propose dans cet article de découvrir brièvement son fonctionnement.

PHPMailer est simple d’utilisation et ouvre beaucoup de possibilités :

  • Envoi au format HTML
  • Insertion de pièces jointes
  • Authentification SMTP
  • Multipart/alternative pour les clients qui ne peuvent pas lire les emails en HTML
  • Debugging en cas d’échec de l’envoi du mail

Comment utiliser PHPMailer ?

On commence par télécharger la librairie (attention il faut prendre le package correspondant à votre version de php). Placez la librairie sur votre serveur, par exemple dans un dossier nommé classes.
Créez votre fichier PHP qui servira à envoyer le mail php comme suit :

// On va chercher la classe PHPMailer
require_once('classes/class.phpmailer.php');
// Création d'un nouvel objet $mail
$mail = new PHPMailer();
// Encodage
$mail->CharSet = 'UTF-8';
// Corp de notre email
$body = "<p>Salut tout le <u>monde</u>,
voici un mail en <b>HTML</b></p>";
// Expediteur, adresse de retour et destinataire :
$mail->SetFrom("contact@nicolas-verhoye.com", "Nicolas Verhoye");
$mail->AddReplyTo("nicolas.verhoye@gmail.com", "Nicolas Verhoye");
$mail->AddAddress("destinataire@website.com", "Destinataire");
// Sujet du mail
$mail->Subject = "Test d'envoi de mail avec PHPMailer";
// Le message
$mail->MsgHTML($body);
// Pièce jointe
$mail->AddAttachment("images/phpmailer.gif");
// Envoi de l'email
if ( !$mail->Send() ) {
echo "Echec de l'envoi du mail, Erreur: " . $mail->ErrorInfo;
} else {
echo "Message envoyé!";
}
unset($mail);

Et voila c’est terminé, cliquez ici si vous souhaitez télécharger la librairie sur le site de l’auteur.

Nicolas Verhoye

Développeur Magento, Freelance

  1. Jean-Sam dit :

    Bonjour, merci pour cet article. Je me demandais si vous saviez comment inclure un captcha du style « 2+2= ? indiquez la réponse ».

    Je suis très satisfait de PHP Mailer mais bon, le SPAM attaque et les clients se plaignent. Merci.

  2. Ch@rlus dit :

    Petite faute à corriger : « $mail->CharSet = ‘UTF-8′ », ligne 8. Il manque un ; pour finir l’instruction :)

  3. nverhoye dit :

    Effectivement, merci Ch@rlus 😉

  4. cristian dit :

    bonjour, je peux déjà envoyer des messages à des contacts différents tirant vos e-mails à partir de mysql mais maintenant j’ai le problème suivant que je fais de sorte que lorsque j’envoie un email à chacun de mes contacts passer le message à tout le monde, mais chacun avec son propre nom tirant de la base de données.

  5. Momo dit :

    Merci pour le tutoriel !

    Juste une erreur à la ligne 29 de votre code (mettre « -> » au lieu de « > ») :p

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *