eventhomes / laravel-mandrillhooks by lostincode

A simple Mandrill webhook controller to help with events. Compatible with Laravel 5+ and Lumen 5+.
73,904
63
6
Package Data
Maintainer Username: lostincode
Maintainer Contact: roundedvision@gmail.com (Bill Richards)
Package Create Date: 2015-07-22
Package Last Update: 2021-04-20
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-12-15 03:04:45
Package Statistics
Total Downloads: 73,904
Monthly Downloads: 89
Daily Downloads: 0
Total Stars: 63
Total Watchers: 6
Total Forks: 11
Total Open Issues: 0

Laravel 5 / Lumen 5 Mandrill Webhook Controller

Latest Version Software License Total Downloads

A simple Mandrill webhook controller to help with email events. Useful for notifying users that you cannot reach them via email inside your application. Compatible with Laravel 5+ and Lumen 5+.

Installation

composer require eventhomes/laravel-mandrillhooks

Basic Usage

  1. Create a controller that extends MandrillWebhookController as follows. You can then handle any Mandrillapp webhook event.
use EventHomes\Api\Webhooks\MandrillWebhookController;

class MyController 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.
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

(Optional) Webhook Authentication

If you would like to increase the security of the webhooks. Add the MandrillWebhookServiceProvider provider to the providers array in config/app.php

'providers' => [
  ...
  EventHomes\Api\Webhooks\MandrillWebhookServiceProvider::class,
],

Next, publish the configuration via

php artisan vendor:publish --provider="EventHomes\Api\Webhooks\MandrillWebhookServiceProvider"

Simply add your Mandrill webhook key in the config file and requests will be authenticated.

Webhook Events

Webhook event types:

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

Contributors

Special thanks to @rafaelbeckel and @minioak!