I. Introduction

PHP Mailer est une classe PHP facilitant la génération et l'envoi d'e-mails. Nous allons vous expliquer où trouver cette classe , comment la configurer et enfin, comment l'utiliser avec des exemples à l'appui.

II. Où trouver PHP mailer?

PHP Mailer est disponible ici au format Zip et ici au format tar.gz Choisissez le miroir qui vous sied le mieux et le téléchargement s'effectuera automatiquement.

III. Installation de PHP Mailer

L'installation de PHP Mailer est assez simple. Il faut dézipper le fichier dans le répertoire racine de votre serveur Web référencé par la variable DocumentRoot dans le fichier de configuration d'Apache (httpd.conf). Sur Linux, même procédure que pour windows

  • gunzip phpmailer.tar.gz
  • tar -xf phpmailer.tar

Lorsque les fichiers ont été décompressés, vous pouvez les inclure dans vos scripts php via la fonction include

 
TéléchargerCacherSélectionnez

Note: pour tout type d'inclusion, quelle que soit la plateforme, je vous conseille d'utiliser des slash "/" plutôt que des "\". Les slashs sont reconnus sur toutes les plateformes. Si toutefois, vous décidiez d'utiliser des backslash sous windows, n'oubliez pas de les échapper.

IV. Méthodes d'envoi

IV-A. Deux méthodes génériques

Avec PHP Mailer, il y a deux méthodes pour envoyer des e-mails.

  • La méthode SMTP permettant de se connecter à un serveur de mail distant
  • La méthode "mail" lorsque le serveur de mail est local

La méthode SMTP peut également être utilisée avec un serveur local mais il est préférable de privilégier la méthode "mail" avec un serveur local car elle est plus rapide.

IV-B. SMTP (Simple Mail Transfer Protocol)

SMTP est un protocole très répandu et comme son nom l'indique, permet d'envoyer assez facilement des e-mails. On utilise généralement cette méthode lorsque le serveur de mail est distant car dans ce cas, c'est en fait l'unique méthode offerte par PHP Mailer.

Pour se connecter au serveur SMTP, il faut évidement en connaître soit le nom + domaine si nécessaire, soit l'adresse IP. Il est préférable de travailler avec le nom. Lorsque vous connaissez ces paramètres, vous pouvez tester la connexion comme suit:

 
TéléchargerCacherSélectionnez

La classe SMTP de PHP Mailer ne fait rien d'autre qu'émettre ces commandes à votre place. Si vous rencontrez un problème en utilisant SMTP dans vos scripts PHP, vous pouvez tester manuellement l'envoi d'un e-mail comme expliqué ci-dessus pour voir si votre serveur est ok.

IV-C. Serveur mail local

Lorsque le serveur mail est local, il suffit d'utiliser les méthodes suivantes:

  • Mail
  • Sendmail
  • Qmail

qui se chargeront de communiquer avec le serveur local. Le serveur sera soit reconnu par localhost(127.0.0.1), soit par le nom qui lui est attribué au sein d'un réseau

Note: plus d'info sur ces méthodes dans la description des méthodes et propriétés.

V. Brève description des principales méthodes et des propriétés

Méthode Description
AddAddress (string $address, [string $name]) Action: ajout des destinataires. $adress représente le destinataire, $name est optionnel et représente le nom correspondant à l'adresse
AddCC (string $address, [string $name]) Action: ajout des destinataires en copie. $adress représente le destinataire, $name est optionnel et représente le nom correspondant à l'adresse
AddBCC (string $address, [string $name]) Action: ajout des destinataires en copie cachée. $adress représente le destinataire, $name est optionnel et représente le nom correspondant à l'adresse
AddReplyTo (string $address, [string $name]) Action: définit l'adresse de retour en cas d'échec. $adress représente le destinataire, $name est optionnel et représente le nom correspondant à l'adresse
AddAttachment(string $path, [string $name = ""], [string $encoding], [string $type]) Action: ajout d'un fichier en attachement, $path:chemin du fichier, $name:nom de l'attachement, $encoding:format d'encodage, $type:en-tête. $name, $encoding et $type sont optionnels.
ClearAddresses() Action: vide le tableau contenant les adresses des destinataires
ClearAllRecipients() Action: vide les tableaux contenant les adresses des destinataires, en copie et en copie cachée
ClearAttachments() Action: supprime tous les attachements
ClearBCCs() Action: supprime tous les destinataires en copie cachée
ClearCCs() Action: supprime tous les destinataires en copie
ClearReplyTos() Action: supprime tous les destinataires en adresse de retour
IsHTML($bool) Action: spécifie si le corps du mail est du HTML, l'argument $bool est true ou false
IsSMTP($bool) Action: spécifie que le mail sera envoyé sur un serveur SMTP
IsQmail() Action: spécifie que le server mail local est Qmail
IsMail() Action: spécifie que la fonction mail de PHP doit être utilisée
IsSendMail() Action: spécifie que le programme sendmail doit être utilisé
Send() Action: envoie l'e-mail
Propriété Description
$Host Spécifie l'hôte (ou les hôtes)SMTP auquel il faut se connecter. Par défaut, le port utilisé est 25, on peut en spécifier un autre comme ceci: $mail->Host='hote:port' où port est le numéro de port
$From Spécifie l'adresse de l'expéditeur
$FromName Spécifie le nom de l'expéditeur
$Body Contient le corps du message à envoyer
$SMTPAuth Valeur: true ou false, true spécifie que le serveur SMTP exige une anthentification
$Username Valeur: nom de l'utilisateur SMTP (nécessaire seulement si le serveur demande une authentification
$Password Valeur: mot de passe de l'utilisateur SMTP (nécessaire seulement si le serveur demande une authentification
$SMTPDebug Valeur: true ou false. Si la valeur est true, le débogeur sera activé. Très intéressant lorsqu'il y a des problème d'envoi
$Subject Définit le sujet du mail

Note: certaines méthodes ne fonctionnent qu'avec certains serveurs mails. Par exemple AddBCC ne fonctionne qu'avec SMTP et mail, pas avec Qmail. Je vous encourage à lire la documentation officielle disponible dans le paquetage PHP Mailer sur la compatibilité des méthodes avec les différents serveurs mails.

VI. Scripts d'envoi de mails

VI-A. Envoi d'e-mail au format texte

Image non disponible

Voici le code utilisé pour envoyer cet e-mail

 
TéléchargerCacherSélectionnez

Note: l' e-mail a été envoyé via SMTP, si vous désirez envoyer le même e-mail avec votre serveur local, il suffit de retirer l'appel aux méthodes IsSMTP(),SmtpClose() et Host() puisque l'hôte sera local. Vous pourrez aussi le cas échéant utiliser les méthodes IsQmail(), IsSendmail, IsMail selon le serveur local utilisé

VI-B. Envoi d'e-mail au format HTML

Image non disponible

Voici le code utilisé pour envoyer cet e-mail

 
TéléchargerCacherSélectionnez

Note: l' e-mail a été envoyé via SMTP, si vous désirez envoyer le même e-mail avec votre serveur local, il suffit de retirer l'appel aux méthodes IsSMTP(),SmtpClose() et Host() puisque l'hôte sera local. Vous pourrez aussi le cas échéant utiliser les méthodes IsQmail(), IsSendmail, IsMail selon le serveur local utilisé

VI-C. Envoi d'e-mail incluant une image

Image non disponible
 
TéléchargerCacherSélectionnez

Note: l' e-mail a été envoyé via SMTP, si vous désirez envoyer le même e-mail avec votre serveur local, il suffit de retirer l'appel aux méthodes IsSMTP(),SmtpClose() et Host() puisque l'hôte sera local. Vous pourrez aussi le cas échéant utiliser les méthodes IsQmail(), IsSendmail, IsMail selon le serveur local utilisé

Pour envoyer un mail contenant une image, il faut que ce mail soit au format html et il faut y inclure une balise <img> dont la source sera un lien pointant vers l'image. Le lien devra bien sûr être de la forme http://...., l'image sera donc sur un serveur accessible via le net.

VI-D. Envoi d'e-mail avec un fichier attaché

Image non disponible

Voici le code utilisé pour envoyer cet e-mail

 
TéléchargerCacherSélectionnez

VII. La gestion d'erreur

PHP Mailer possède une gestion d'erreur qui lui permet de retourner un message à l'utilisateur lorsqu'une erreur se produit. L'utilisateur peut choisir la langue de son choix parmi l'Anglais, le Portugais, l'Italien et l'Allemand. La langue utilisée par défaut est l'Anglais. En tant que Francophone, vous allez probablement garder l'Anglais comme langue par défaut, le problème c'est que la fonction de PHP Mailer qui vérifie la langue à utiliser, utilise le répertoire courant comme valeur par défaut pour le chemin d'accès aux fichiers de langue. Cela a pour effet que si votre script ne se trouve pas dans le même répertoire que le fichier de la langue concernée, vous obtiendrez toujours le même message d'erreur lorsqu'une erreur se produira, ce message sera: Language string failed to load:[quelquechose]. Vous devrez donc utiliser la méthode SetLanguage() pour indiquer à PHP Mailer où trouver les fichiers contenant les messages d'erreurs dans les différentes langues.