Skip to content

A simple Mandrill webhook base controller for catching bounced, rejected, etc mail events.

License

Notifications You must be signed in to change notification settings

avdb/laravel-mandrillhooks

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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!

About

A simple Mandrill webhook base controller for catching bounced, rejected, etc mail events.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%