dansmaculotte/laravel-newsletter

Manage newsletters in Laravel

v4.0.0 2022-03-09 16:13 UTC

This package is auto-updated.

Last update: 2024-04-09 20:38:38 UTC


README

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.

Installation

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

Usage

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;

Newsletter::subscribe('rincewind@discworld.com');

Add add email address to list but excluded from marketing emails

use Newsletter;

Newsletter::addMember('rincewind@discworld.com');

Let's unsubscribe someone:

Newsletter::unsubscribe('the.luggage@discworld.com');

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:

Newsletter::delete('rincewind@discworld.com');

Getting subscriber info

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

Newsletter::getMember('lord.vetinari@discworld.com');

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:

Newsletter::getLastError();

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.

Testing

Run the tests with:

vendor/bin/phpunit

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

License

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