floor12/yii2-module-mailing

Build Status Latest Stable Version Latest Unstable Version Total Downloads License

Данный модуль разработан для отправки массовых рассылок (как пользователям приложения, так и по произвольным спискам). Он отслеживает открытые письма (при включенной загрузке изображений), а так же отслеживает открытые ссылки, при наличии их в рассылке.

Отправка рассылок возможна на: - произвольный список email адресов, введенных непосредственно при составлении рассылки; - по заранее составленным спискам (их можно составлять в интерфейсе админки модуля, но часто бывает удобно составлять их динамически самостоятельно); - извлекая адреса из одной или нескольких ActiveRecord моделей вашего приложения.

Установка

Ставим модуль

Выполняем команду

$ composer require floor12/yii2-module-mailing

иди добавляем в секцию “requred” файла composer.json

"floor12/yii2-module-mailing" : "*"

Выполняем миграцию для созданию необходимых таблиц

$ ./yii migrate --migrationPath=@vendor/floor12/yii2-module-mailing/src/migrations/

Если до этого не был установлен модуль floor12\files\Module, который присутствует тут в зависимостях, то создаем папку @app/storage c правами веб-сервера на запись, так же выполняем миграцию для модуля файлов:

$ ./yii migrate --migrationPath=@vendor/floor12/yii2-module-files/src/migrations/

Добавляем данный модуль в конфиг приложения (а так же модуль floor12/yii2-module-files, если он не был установлен в приложении прежде)

'modules' => [
        'mailing' => [
            'class' => 'floor12\mailing\Module',
            'editRole' => 'admin',
            'layout' => '@app/views/layouts/columns',
            'fromEmail' => 'no-reply@example.com',
            'fromName' => 'Служба рассылок сайта example.com',
            'htmlTemplate' => 'mailing-main',
            'domain' => 'https://aexample.com',
            'linkedModels' => [
                \common\models\User::class,
                \common\models\Clients::class,
            ]
        ],
        'files' => [
            'class' => 'floor12\files\Module',
        ],
    ],
    ...

Параметры:

Запуск очереди

Для запуска очередь необходимо выполнить команду:

$./yii mailing/queue

Рекомендую добавить ее в крон с периодичностью минут в 15.

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

Админка модуля доступна по адресу https://example.com/mailing.

Раздел рассылок: Image Раздел списков: Image Раздел адресов: Image

При редактировании рассылки, если в конфиге модуля были указаны какие-либо классы в массиве linkedModels, то компоненты Select2 с выбором объектов этих классов будут сформированы автоматически. На изображениях показан пример с классом common\models\User.

Image

В примере на изображении класс User реализует floor12\mailing\interfaces\MailingRecipientInterface следующим образом, благодаря чему, в форме генерируется поле “пользователи”.

class User extends MyActiveRecord implements IdentityInterface, MailingRecipientInterface
{

    public static function getMailingList(): array
    {
        return self::find()->select('fullname')->indexBy('id')->column();
    }

    public static function getMailingLabel(): string
    {
        return "Пользователи";
    }

    public function getMailingEmail(): string
    {
        return $this->email;
    }
    ...

Остальные подробности можно узнать из исходного кода.