Aller au contenu principal
Version: 5.x

Envoi de mail avec Bow Framework

Introduction​

Envoyer des emails dans une application est monnaie courante. Bow Framework intègre un système d'envoi d'email facile à utiliser. Vous pouvez utiliser ce système à travers plusieurs pilotes communément appelés drivers :

  • SMTP - Envoi direct via un serveur SMTP
  • SES - Vous pouvez aussi utiliser SES
  • MAIL - Le système utilisera la fonction mail native de PHP

Configuration​

Vous trouverez la configuration dans le fichier config/mail.php qui est relativement simple. Les options sont toutes commentées.

Driver SES

Installez le package aws/aws-sdk-php si vous voulez utiliser ses comme driver de mail.

composer require aws/aws-sdk-php

Utilisation​

Pour utiliser le service, vous devez appeler la classe Bow\Mail\Mail::class. Il y a deux méthodes statiques pour l'envoi de mail : send et raw.

La méthode send​

send permet d'envoyer des emails en se basant sur une vue dans l'application.

Prototype send​

send($view, array $data, callable $callable)
ParamètreType
viewString - Le nom de la vue à utiliser
dataArray - Les informations à passer à la vue
callableClosure - Le constructeur du message

$callable vous permet de construire le message et prend en paramètre une instance de Bow\Mail\Message qui permet d'ajouter le destinataire, l'objet, les pièces jointes, l'expéditeur.

Exemple d'utilisation :

Considérons la vue email-view.tintin.php qui contient les informations suivantes :

templates/email-view.tintin.php
Bonjour {{ $name }},

Nous vous informons que votre compte vient d'être crédité de 100.000.000 F.

Cordialement,

Écrivons maintenant le code qui envoie le mail :

use Bow\Mail\Mail;
use Bow\Mail\Message;

$data = [
'name' => 'Franck',
];

Mail::send('email-view', $data, function (Message $message) {
$message->to('info@exemple.com');
$message->subject("Paiement !");
$message->from("Bow <info@exemple.com>");
});

API de Message​

Bow Framework va donc passer une instance de Bow\Mail\Message::class qui vous permettra d'ajouter des informations supplémentaires à votre email, notamment le destinataire.

addHeader - Ajout d'en-têtes personnalisés​
$message->addHeader(string $key, string $value)
to - Définit le destinataire​
$message->to(string $to, string $name = null)
toList - Ajout de plusieurs destinataires​
$message->toList(array $list_desc)
addFile - Permet d'ajouter une pièce jointe​
$message->addFile(string $file)
subject - Définit l'objet du mail​
$message->subject(string $subject)
from - Définit l'expéditeur du mail​
$message->from(string $from, string $name = null)
html - Définit le type de contenu en text/html​
$message->html($html)
text - Définit le corps du message​
$message->text(string $text)
addBcc - Ajoute l'en-tête Blind Carbon Copy​
$message->addBcc(string $mail, string $name = null)
addCc - Ajoute l'en-tête Carbon Copy​
$message->addCc(string $mail, string $name = null)
addReplyTo - Ajoute l'en-tête Reply-To​
$message->addReplyTo(string $mail, $name = null)
addReturnPath - Ajoute l'en-tête Return-Path​
$message->addReturnPath(string $mail, $name = null)

La méthode raw​

raw par contre, permet d'envoyer des emails avec un message brut.

Prototype raw​

raw($to, $subject, $message, array $headers = [])
ParamètreType
toString - L'email du destinataire
subjectString - L'objet du mail
messageString - Le message à envoyer
headersArray - Les en-têtes à envoyer (par défaut vide)
use Bow\Mail\Mail;

$email = "hello@exemple.com";
$subject = "Hello, world";
$message = "C'est juste un email de test";

Mail::raw($email, $subject, $message);

Il manque quelque chose ?

Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.