✉️ Envoi de mail
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
mailnative de PHP
Configuration
Vous trouverez la configuration dans le fichier config/mail.php qui est relativement simple. Les options sont toutes commentées.
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ètre | Type |
|---|---|
| view | String - Le nom de la vue à utiliser |
| data | Array - Les informations à passer à la vue |
| callable | Closure - 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 :
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ètre | Type |
|---|---|
| to | String - L'email du destinataire |
| subject | String - L'objet du mail |
| message | String - Le message à envoyer |
| headers | Array - 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.