mixislv / laravel-mandrill-driver
Laravel 9+ Mandrill Driver & Webhooks handler
Installs: 8 599
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- illuminate/routing: ^9.0
- illuminate/support: ^9.0
- symfony/http-client: ^6.0
- symfony/mailchimp-mailer: ^6.0
README
This package re-enables Mandrill driver functionality using the Mail facade in Laravel 9+.
Install
To install the package in your project, you need to require the package via composer:
composer require mixisLv/laravel-mandrill-driver
Configure
To use the Mandrill driver, set the MAIL_MAILER
environment variable to "mandrill". Next, update the config/services.php
configuration file to include the following options:
'mandrill' => [ 'secret' => env('MANDRILL_SECRET'), 'webhook-key' => env('MANDRILL_WEBHOOK_KEY'), ],
Usage
Send e-mail
https://laravel.com/docs/9.x/mail#generating-mailables
You can also add custom Mandrill headers to each email sent. https://laravel.com/docs/9.x/mail#customizing-the-symfony-message
// @todo use Symfony\Component\Mime\Email; /** * Build the message. * * @return $this */ public function build() { $this->view('emails.example'); $this->withSymfonyMessage(function (Email $message) { $message->getHeaders()->addTextHeader( 'Custom-Mailchimp-Header', 'Header Value' // @see https://mailchimp.com/developer/transactional/docs/smtp-integration/#customize-messages-with-smtp-headers ); }); return $this; }
Listening response
// @todo
Webhooks
Forked from eventhomes/laravel-mandrillhooks
- Create a controller that extends MandrillWebhookController as follows. You can then handle any Mandrillapp webhook event.
use mixisLv\LaravelMandrillDriver\MandrillWebhookController; class MandrillController extends MandrillWebhookController { /** * Handle a hard bounced email * * @param $payload */ public function handleHardBounce($payload) { $email = $payload['msg']['email']; } /** * Handle a rejected email * * @param $payload */ public function handleReject($payload) { $email = $payload['msg']['email']; } }
- Create the route to handle the webhook. In your routes.php file add the following.
Route::post('mandrill-webhook', ['as' => 'mandrill.webhook', 'uses' => 'MandrillController@handleWebHook']);
- Exclude your route from CSRF protection so it will not fail.
- Make sure you add your webhook in Mandrill to point to your route. You can do this here: https://mandrillapp.com/settings/webhooks
Webhook Events
Event type | Method | Description |
---|---|---|
Sent | handleSend() | message has been sent successfully |
Bounced | handleHardBounce() | message has hard bounced |
Opened | hadleOpen() | recipient opened a message; will only occur when open tracking is enabled |
Marked As Spam | handleSpam() | recipient marked a message as spam |
Rejected | handleReject() | message was rejected |
Delayed | handleDeferral() | message has been sent, but the receiving server has indicated mail is being delivered too quickly and Mandrill should slow down sending temporarily |
Soft-Bounced | handleSoftBounce() | message has soft bounced |
Clicked | handleClick() | recipient clicked a link in a message; will only occur when click tracking is enabled |
Recipient Unsubscribes | handleUnsub() | recipient unsubscribes |
Rejection Blacklist Changes | handleBlacklist() | triggered when a Rejection Blacklist entry is added, changed, or removed |
Rejection Whitelist Changes | handleWhitelist() | triggered when a Rejection Whitelist entry is added or removed |
Changelog
Please see CHANGELOG for more information about recent changes.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email info@mixis.lv instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.