✉️ 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.