floor12 / yii2-module-mailing
Mailing module for yii2 projects.
Installs: 42
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 2
Open Issues: 0
Type:yii2-module
Requires
Requires (Dev)
- phpunit/phpunit: 4.*
README
Данный модуль разработан для отправки массовых рассылок (как пользователям приложения, так и по произвольным спискам). Он отслеживает открытые письма (при включенной загрузке изображений), а так же отслеживает открытые ссылки, при наличии их в рассылке.
Отправка рассылок возможна на:
- произвольный список 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', ], ], ...
Параметры:
-
editRole
- роль пользователя, который имеет доступ к контроллерам админки модуля. -
layout
- алиас лейаута, которые необходимо использовать в админке модуля. -
fromEmail
- email адрес отправителя рассылок. -
fromName
- От имени кого отправляются рассылки. -
htmlTemplate
- название темплейта в проекте, которые используется для рассылок -
domain
- так как запуск очереди идет через консоль, а она ничего не знает о домене сайта, то прописываем домен приложения, для работы отслеживания открытых писем и переходов по ссылкам. -
linkedModels
- Массив классов ActiveRecord, данные из которых необходимо использовать для формирования адресов получателей. Данные классы должны имплементироватьfloor12\mailing\interfaces\MailingRecipientInterface
. -
unsubscribeRoute
- путь к экшену отписки от рассылки (пользователь помечается как отписанный), обычно менять не стоит.
Запуск очереди
Для запуска очередь необходимо выполнить команду:
$./yii mailing/queue
Рекомендую добавить ее в крон с периодичностью минут в 15.
Использование
Админка модуля доступна по адресу https://example.com/mailing
.
Раздел рассылок: Раздел списков: Раздел адресов:
При редактировании рассылки, если в конфиге модуля были указаны какие-либо классы в массиве linkedModels
,
то компоненты Select2 с выбором объектов этих классов будут сформированы автоматически. На изображениях показан пример
с классом common\models\User
.
В примере на изображении класс 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; } ...
Остальные подробности можно узнать из исходного кода.