Manage newsletters in Laravel

v3.1.0 2020-12-22 08:21 UTC

This package is auto-updated.

Last update: 2021-10-22 10:20:52 UTC


Latest Version Total Downloads Build Status Quality Score Code Coverage

This package is a fork from spatie/laravel-newsletter. It provides an easy way to integrate different email services with Laravel.

There are 2 drivers available:

There is also and log and null driver for testing and debug purpose.


You can install this package via composer using:

composer require dansmaculotte/laravel-newsletter

The package will automatically register itself.

To publish the config file to config/newsletter.php run:

php artisan vendor:publish --provider="DansMaCulotte\Newsletter\NewsletterServiceProvider"

This will publish a file newsletter.php in your config directory.

Finally, install the email service package needed:

  • Mailchimp
composer require drewm/mailchimp-api
  • Mailjet
composer require mailjet/mailjet-apiv3-php


Configure your mail template driver and credentials in config/newsletter.php.

After you've installed the package and filled in the values in the config-file working with this package will be a breeze. All the following examples use the facade. Don't forget to import it at the top of your file.

use Newsletter;

Subscribing, updating and unsubscribing

Subscribing an email address can be done like this:

use Newsletter;


Add add email address to list but excluded from marketing emails

use Newsletter;


Let's unsubscribe someone:


You can pass options as the second argument:

Newsletter::subscribe('rincewind@discworld.com', ['FNAME' => 'Rince', 'LNAME' => 'Wind']);

You can subscribe someone to a specific list by using the third argument:

Newsletter::subscribe('rincewind@discworld.com', ['FNAME' => 'Rince', 'LNAME' => 'Wind'], 'subscribers');

That third argument is the name of a list you configured in the config file.

You can also subscribe and/or update someone. The person will be subscribed or updated if he/she is already subscribed:

Newsletter::subscribeOrUpdate('rincewind@discworld.com', ['FNAME' => 'Foo', 'lastname' => 'Bar']);

You can also unsubscribe someone from a specific list:

Newsletter::unsubscribe('rincewind@discworld.com', 'subscribers');

Deleting subscribers

Deleting is not the same as unsubscribing. Unlike unsubscribing, deleting a member will result in the loss of all history (add/opt-in/edits) as well as removing them from the list. In most cases you want to use unsubscribe instead of delete.

Here's how to perform a delete:


Getting subscriber info

You can get information on a subscriber by using the getMember function:


This will return an array with information on the subscriber. If there's no one subscribed with that e-mail address the function will return false

There's also a convenience method to check if someone is already subscribed:

Newsletter::hasMember('nanny.ogg@discworld.com'); //returns a boolean

In addition to this you can also check if a user is subscribed to your list:

Newsletter::isSubscribed('lord.vetinari@discworld.com'); //returns a boolean

Handling errors

If something went wrong you can get the last error with:


Need something else?

If you need more functionality you get an instance of the underlying Api with:

$api = Newsletter::getApi();

Mailjet notes

Connection timeouts may occur when using mailjet, as described here. You can configure the value you want with configuration key mailjet.connection_timeout, itself using environment variable MJ_CONNECTION_TIMEOUT.


Run the tests with:



Please see CHANGELOG for more information what has changed recently.


Please see CONTRIBUTING for details.


The MIT License (MIT). Please see License File for more information.