Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Управление рассылками писем в Laravel

Раздел: 

На днях состоялся релиз версии 1.0.0 нового пакета для Laravel: laravel-newsletter. Он предоставляет в Ваше распоряжение очень простой способ взаимодействия с сервисами рассылки электронной почты.

Laravel рассылка почты

Сейчас данный пакет поддерживает только MailChimp. Вскоре перечень поддерживаемых сервисов будет расширен.

После установки пакета добавить(убрать) e-mail из рассылки становится элементарно:

Newsletter::subscribe('my@mail.ru')
Newsletter::unsubscribe('my@mail.ru')

Помимо рассмотренного метода, предоставляется еще ряд решений подобных задач, кроме того у Вас появляется возможность получить доступ к базовому MailChimp API.

В пакет будет добавлено больше функционала после нового релиза MailChimp API.

Установка laravel-newsletter

Для этого достаточно воспользоваться командой composer:

composer require spatie/laravel-newsletter

Также сразу необходимо подключить следующего провайдера в файле app.php из директории config:

'providers' => [
    
    'Spatie\Newsletter\NewsletterServiceProvider',
    
];

Для использования facade Вам необходимо также установить и его во все том же файле app.php:

'aliases' => [
    
    'Newsletter' => 'Spatie\Newsletter\NewsletterFacade',
];

Для добавления конфигурационного файла в app/config/laravel-newsletter.php запустите:

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

Эта команда добавит файл laravel-newsletter.php в данную директорию со следующим содержанием:

return [

    'mailChimp' => [

        /*
         * API ключ от MailChimp аккаунта. Ваш вы можете найти здесь:
         * https://us10.admin.mailchimp.com/account/api-key-popup/
        */
        'apiKey' => env('MAILCHIMP_APIKEY'),

        /*
         * Здесь Вы можете задать свойства списков, которые Вы хотите
         * рассылать.
         */
        'lists' => [

            /*
             * Этот ключ используется для идентификации этого списка. Он может быть
             * использован в различных методах предоставляемых данным пакетом.
             *
             * Вы можете установить его в любую строку, которую Вы хотите
             * и Вы можете добавить столько списков, сколько хотите.
             */

            'subscribers' => [

                /*
                 * MailChimp список id. Проверьте MailChimp файлы
                 * если Вы не знаете как получить это значение:
                 * http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id
                 */
                'id' => ' ',

                /*
                 * Эти значения будут использованы при создании новой рассылки.
                 */
                'fromEmail' => ' ',
                'fromName' => ' ',
                'toName' => ' ',
            ],
        ],
    ],
];

Использование

Для создания кампании следует воспользоваться кодом:

$subject = 'My letter';
$contents = '<h1>Wow</h1>';

Newsletter::createCampaign($subject, $contents);

Так мы создаем кампанию, но не отправляем ее.

Для подписки используется:

Newsletter::subscribe('my@mail.ru');

Чтобы отписать человека от рассылки используем:

Newsletter::unsubscribe('my@mail.ru');

Если в конфигурационном файле задано несколько списков необходимо передать их названия дополнительным параметром:

Newsletter::subscribe('my@mail.ru', 'mySecondList');
Newsletter::unsubscribe('my@mail.ru', 'mySecondList');

Newsletter::createCampaign($subject, $contents, 'mySecondList);

Для расширения функционала можно воспользоваться базовым API:

$api = Newsletter::getApi();

Тестируем

Для запуска теста воспользуйтесь:

vendor/bin/phpunit

Перевод статьи Manage newsletters in Laravel 5