mixislv/laravel-mandrill-driver

Laravel 9+ Mandrill Driver & Webhooks handler

v2.1.0 2022-12-07 08:58 UTC

This package is auto-updated.

Last update: 2024-12-07 13:33:16 UTC


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

  1. 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'];
    }
}
  1. 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']);
  1. Exclude your route from CSRF protection so it will not fail.
  2. 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

Webhook event types:

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.