salamwaddah / laravel-mandrill-driver
Mandrill notification channel for Laravel 5, 6, 7, 8, 9, 10, 11
Installs: 54 203
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 1
Forks: 7
Open Issues: 1
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: ^6.5 || ^7.0
- illuminate/notifications: ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
README
Installation
composer require salamwaddah/laravel-mandrill-driver
Configure
Add into your .env file
MANDRILL_SECRET=YOUR_MANDRILL_API_KEY
In your mail.php
file
'from' => [
'address' => 'noreply@example.com',
'name' => "From Name"
],
'mandrill' => [
'key' => env('MANDRILL_SECRET', 'SUPER SECRET KEY')
]
Usage
Basic usage
public function via($notifiable) { return [MandrillChannel::class]; } public function toMandrill($notifiable) { return (new MandrillMessage()) ->subject('Purchase successful') ->addTo($notifiable->email) ->view('mandrill-template-name', [ 'product' => $this->product->toArray(), 'user' => [ 'name' => $notifiable->name, 'phone' => $notifiable->phone ] ]); }
Advanced
public function toMandrill($notifiable) { return (new MandrillMessage()) ->subject('Purchase successful') ->templateName('mandrill-template-name') ->addTo($notifiable->email) ->addTos(['a@example.com', 'b@example.com']) ->fromName('Customized From') ->fromEmail('custom_from@example.com') ->replyTo('reply@example.com') ->content([ 'product' => $this->product->toArray(), ]); }
Available methods
Note: To keep it consistent with laravel's Mail
implementation of replyTo
, you can pass two parameters, second parameter is ignored, and If replyTo
is called multiple times only first one will be used and others will be ignored. Because mandrill only allows one email address for reply to.
Usage in Mandrill (Dynamic Handlebars)
When specifying your content in the methods content
or view
you can then write in handlebars syntax in your Mandrill templates like this;
Hey {{user.name}}
, you have successfully purchased {{product.name}}
.
Mailchimp syntax
If you wish to use Mailchimp Merge Tags instead of the dynamic handlebars then you can set the $mergeLanguage
optional param in templateName
method to mailchimp
.
In mailchimp merge tags, arrays are not supported, so each tag only accepts a string. Full documentation including booked keywords on mandrill
Mailchimp Example
public function toMandrill($notifiable) { return (new MandrillMessage()) ->subject('Purchase successful') ->templateName('mandrill-template-name', 'mailchimp') << HERE ->addTo($notifiable->email) ->content([ 'customer_name' => $notifiable->name, 'invoice_link' => 'http://example.com/download/invoice.pdf', ]) }
Then in your mandrill template use as follows;
Hi *|customer_name|*
, you can download your invoice from here *|invoice_link|*
,