mixislv / laravel-mandrill-driver
Laravel 9+ Mandrill Driver & Webhooks handler
Installs: 8 560
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
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
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.