composer require salamwaddah/laravel-mandrill-driver
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')
]
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
]
]);
}
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(),
]);
}
Method | Type | Description |
---|---|---|
subject |
string |
Sets the email subject |
templateName |
string |
Sets template name in Mandrill |
addTo |
string |
Adds a To email |
addTos |
array |
Adds multiple To emails |
fromName |
string |
Overrides the default from name |
fromEmail |
string |
Overrides the default from email |
content |
array |
Content array |
replyTo |
string |
Accepts one parameter($email ) |
view |
function |
Accepts 2 params ($templateName , $keyedContentArray ) |
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.
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}}
.
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
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|*
,