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 ?

Logo PHP

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.

Vus : 1212
Publié par Progi1984 : 78