3.1 KiB
Mail Templates
Ce package Laravel permet d'envoyer des templates mail via Sendinblue, Bluesquare Mail, et d'autres fournisseurs au besoin.
Installation
Ajouter à composer.json
:
"require": {
"bluesquare/laravel-mail-templates": "^1.1"
},
"repositories": [
{
"type": "vcs",
"url": "https://git.bluesquare.io/bluesquare/laravel-mail-templates"
}
]
Puis installer le package ainsi :
composer update bluesquare/laravel-mail-templates
Configuration
Par défaut, ces variables sont indispensables dans le .env
:
MAIL_TEMPLATES_PROVIDER=sendinblue
MAIL_TEMPLATES_API_KEY=your_api_key
Par défaut, MAIL_FROM_NAME
et MAIL_FROM_ADDRESS
sont utilisés pour l'expéditeur, mais peuvent être personnalisés ainsi :
MAIL_TEMPLATES_FROM_NAME="Bluesquare"
MAIL_TEMPLATES_FROM_ADDRESS="contact@bluesquare.io"
Il est aussi possible d'utiliser un endpoint personnalisé pour le provider choisi :
MAIL_TEMPLATES_API_URL=http://laravel.test/api/mails/template
Utilisation
Créer une notification :
php artisan make:notification MyAwesomeNotification
Ajouter MailTemplatesChannel
dans la méthode via()
:
return [MailTemplatesChannel::class];
Ajouter une méthode 'toTemplate()', en spécifiant le template et les paramètres souhaités :
public function toTemplate($notifiable)
{
return (new MailTemplate('invoice-available'))
->addParameter('price', '$100');
}
Exemple avancé :
public function toTemplate($notifiable)
{
return (new MailTemplate("my-template-name"))
->sender("john.doe@gmail.com", "John OPTIONAL") // OPTIONAL
->replyTo("jean.grey@gmail.com", "Jean OPTIONAL") // OPTIONAL
->recipients([
[
"elvis@gmail.com",
[
"name" => "Elvis" // OPTIONAL,
"parameters" => ["key" => "value"] // OPTIONAL
]
],
[
"robert@gmail.com"
]
])
->addRecipient("edward@gmail.com") // OPTIONAL
->parameters(["key" => "value", "key" => "value"]) // OPTIONAL
->addParameter("key", "value") // OPTIONAL
;
}
Le
$notifiable
est automatiquement ajouté comme destinataire.
Mapping
Lors d'une transition d'un provider à l'autre, les ID / noms de templates peuvent varier. Pour cette raison, il est possible de mapper les templates selon le provider.
Avant tout, publier le fichier de config via :
php artisan vendor:publish
Ensuite, mapper les templates dans config/mail_templates.php
:
'map' => [
'sendinblue' => [
// Nom utilisé dans la notification => ID réel du template sur Sendinblue
'template-1' => '1',
'template-2' => '3',
],
//...
]
Tests
Il est possible de rediriger tous les mails vers une adresse :
MAIL_TEMPLATES_REDIRECT="contact@bluesquare.io"
Ou de logger les templates au lieu de les envoyer :
MAIL_TEMPLATES_PROVIDER=logs