PHP, envoyer des mails avec PHPMailer

Que ce soit pour tenir informer les inscrits à une newsletter ou bien notifier les utilisateurs de son site d’une information, l’envoi de mail peut rapidement devenir incontournable. Il est bien sûr possible d’installer un serveur de messagerie mais si le volume de mail à envoyer n’est pas énorme et si tu disposes d’une adresse mail chez un fournisseur, tu peux utiliser la librairie PHPMailer qui te simplifiera l’envoi de mail.

J’ai déjà abordé l’envoi de mail mais en python sur cette page.

Avant de commencer, tu devras avoir installé un serveur web complet avec PHP, tu peux le faire en suivant ce lien.

Installation de PHPMailer

Il n’y a pas d’installation à proprement parler, tu devras copier le dossier dans le dossier de ton site ou application, soit en le déposant directement dans le dossier (en local ou via FTP), pour cela, tu peux le télécharger ici : PHPMailer.

Tu peux utiliser composer, dans ce cas, je te laisse suivre les étapes disponibles sur le dépôt.

Sur Ubuntu Server (en mode console), en te plaçant dans le dossier, tu peux faire :

git clone https://github.com/PHPMailer/PHPMailer.git

L’installation est finie.

Envoi d’un mail

Passons directement à l’envoi du mail, pour cela, tu auras besoin :

  • une adresse mail
  • le mot de passe
  • l’adresse du serveur smtp et le port de ce serveur

Voici la liste des différents serveurs SMTP (vu ici) :

9 TelecomNeuf.frsmtp.neuf.fr
AliceAliceadsl.frsmtp.aliceadsl.fr
AOLAol.comsmtp.aol.com
AT&TAtt.netoutbound.att.net
BluewinBluewin.chsmtpauths.bluewin.ch
BouygtelBouygtel.frsmtp.bouygtel.fr
Club InternetClub-internet.frmail.club-internet.fr
FreeFree.frsmtp.free.fr
GmailGmail.comsmtp.gmail.com
IFraIfrance.frsmtp.ifrance.fr
HotmailHotmail.comsmtp.live.com
LaPosteLaposte.frsmtp.laposte.fr
NetCourrierNetcourrier.comsmtp.netcourrier.com
O2o2.comsmtp.o2.com
OrangeOrange.frsmtp.orange.fr
Outlook.com (former Hotmail)Outlook.comsmtp.live.com
SympaticoSympatico.casmtphm.sympatico.ca
TiscaliTiscali.frsmtp.tiscali.fr
VerizonVerizon.netoutgoing.verizon.net
VoilaVoila.frsmtp.voila.fr
WanadooWanadoo.frsmtp.wanadoo.fr
YahooYahoo.commail.yahoo.com

Avec cela, tu auras besoin du port d’accès, de manière général, la connexion passera par du SSL, le port par défaut est 465 (lire cet article pour obtenir plus d’informations sur les ports).

Pour information, pour IONOS, le port SSL/TTL est 587.

Une fois toutes les informations connectées, dans un fichier au même niveau que le dossier PHPMailer, écrire :

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require('PHPMailer'.DIRECTORY_SEPARATOR.'src'.DIRECTORY_SEPARATOR.'Exception.php');
require('PHPMailer'.DIRECTORY_SEPARATOR.'src'.DIRECTORY_SEPARATOR.'PHPMailer.php');
require('PHPMailer'.DIRECTORY_SEPARATOR.'src'.DIRECTORY_SEPARATOR.'SMTP.php');

$mail = new PHPMailer(true);
try{
	// Configuration du serveur
	$mail->isSMTP();
	$mail->Host 		= 'adresse-serveur-smtp';
	$mail->SMTPAuth		= true;
	$mail->Username		= 'identifiant@mail';
	$mail->Password		= 'mot_de_passe';
	$mail->SMTPSecure	= PHPMailer::ENCRYPTION_STARTTLS;
	$mail->Port		= 587; //465

	// Adresses
	$mail->setFrom('adresse_affichée_expéditeur', 'nom_affiché_expéditeur');
	$mail->addAddress('adresse_mail_destinataire', 'nom_destinataire');
	$mail->addReplyTo('adresse_mail_de_réponse', 'nom de réponse');
        $mail->addCC('adresse_mail_copie');
	$mail->addBCC('adresse_mail_cachée');

	// pièce jointe
	$mail->addAttachment('/chemin/vers/piece/jointe', '/chemin/vers/seconde/piece/jointe');

	// contenu
	$mail->isHTML(true);
	$mail->Subject		= 'Sujet du mail';
	$mail->Body		= 'C\'est le corps du <strong>message</strong>';
	$mail->AltBody		= 'Un corps alternatif si la version HTML ne peut être affiché';

	$mail->send();
	echo 'Mail envoyé';
} catch ( Exception $e ){
	echo 'Le message ne peut pas être envoyé. Mailer erreur : '.$mail->ErrorInfo;
}
?>

Il ne reste plus qu’à exécuter le fichier et vérifier dans la boite mail.

Conclusion

PHPMailer est un outil puissant en PHP permettant de diffuser des mails facilement.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.