Notifier par e-mail en PHP
Après un première article sur les notifications HTML5, je vais continuer cette série sur les notifications avec l’e-mail. Comment notifier simplement un utilisateur par e-mail ?
Installation de la librairie
Dans notre exemple, nous allons utiliser la librairie SwiftMailer produit par SensioLabs, l’éditeur de Symfony.
Pour l’installer, nous allons utiliser Composer :
{ "require": { "swiftmailer/swiftmailer": "*", } }
Puis en haut de notre fichier PHP, nous allons inclure l’autoload de Composer.
include_once './vendor/autoload.php';
Configuration du serveur SMTP
Nous allons configurer SwiftMailer pour qu’il utilise un serveur SMTP pour envoyer les e-mails.
Il pourra utiliser GMail :
$oTransporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl'); $oTransporter->setUsername($this->username); $oTransporter->setPassword($this->password); $oMailer = Swift_Mailer::newInstance($oTransporter);
Ou il pourra utiliser OVH :
$oTransporter = Swift_SmtpTransport::newInstance('smtp.votredomaine.tld', 25, 'ssl'); $oTransporter->setUsername($this->username); $oTransporter->setPassword($this->password); $oMailer = Swift_Mailer::newInstance($oTransporter);
Mais il pourra évidemment utiliser votre serveur SMTP.
Configuration du message
Après avoir configuré le serveur SMTP, on va configurer le message que l’on souhaite envoyer.
On crée une instance de message :
$oMessage = Swift_Message::newInstance();
A partir de cet instance, on peut lui définir certains attributs :
- le sujet :
$oMessage->setSubject('Subject');
- l’expéditeur :
$oMessage->setFrom(array('email@domain.tld' => 'Nom Prénom'));
- le(s) destinataire(s) :
$oMessage->setTo(array('email1@domain.tld' => 'Nom1 Prénom1', 'email2@domain.tld' => 'Nom2 Prénom2')); $oMessage->setCc(array('email3@domain.tld' => 'Nom3 Prénom3')); $oMessage->setBcc(array('email4@domain.tld' => 'Nom4 Prénom4'));
- le corps du message :
$oMessage->setBody('Body');
- les pièces jointes :
$oMessage->attach(Swift_Attachment::fromPath('file.ext'));
Comment faire pour définir un corps HTML et Texte à votre mail ?
$oMessage->setBody('<strong>Gras</strong><h1>Titre</h1>', 'text/html'); $oMessage->addPart('GrasTitre', 'text/plain');
Envoi d’e-mail
Ensuite, il suffit de lier le message au serveur :
$result = $oMailer->send($oMessage);
Lien : Documentation de SwiftMailer
Cet article Notifier par e-mail en PHP est apparu en premier sur RootsLabs.