Manage newsletters in Laravel
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
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
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:
composer require drewm/mailchimp-api
composer require mailjet/mailjet-apiv3-php
Configure your mail template driver and credentials in
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.
Subscribing an email address can be done like this:
use Newsletter; Newsletter::subscribe('firstname.lastname@example.org');
Add add email address to list but excluded from marketing emails
use Newsletter; Newsletter::addMember('email@example.com');
Let's unsubscribe someone:
You can pass options as the second argument:
Newsletter::subscribe('firstname.lastname@example.org', ['FNAME' => 'Rince', 'LNAME' => 'Wind']);
You can subscribe someone to a specific list by using the third argument:
Newsletter::subscribe('email@example.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('firstname.lastname@example.org', ['FNAME' => 'Foo', 'lastname' => 'Bar']);
You can also unsubscribe someone from a specific list:
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
Here's how to perform a delete:
You can get information on a subscriber by using the
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
There's also a convenience method to check if someone is already subscribed:
Newsletter::hasMember('email@example.com'); //returns a boolean
In addition to this you can also check if a user is subscribed to your list:
Newsletter::isSubscribed('firstname.lastname@example.org'); //returns a boolean
If something went wrong you can get the last error with:
If you need more functionality you get an instance of the underlying Api with:
$api = Newsletter::getApi();
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
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.