oleg-chulakov-studio/yii2-queue-mailer
Composer 安装命令:
composer require oleg-chulakov-studio/yii2-queue-mailer
包简介
Mailer with send message via queue.
README 文档
README
Компонент отправки почты путем постановки ее в очередь.
Компонент полностью имплементирует весь функционал мейлера и может быть использован как основной мейлер, без потери привычного функционала.
Установка
Для подключения компонентов в свой код необходимо добавить в composer.json следующий код:
"oleg-chulakov-studio/yii2-queue-mailer": "dev-master"
Или набрать команду:
composer require oleg-chulakov-studio/yii2-queue-mailer
Выполнение миграций:
php yii migrate/up --migrationPath="@vendor/oleg-chulakov-studio/yii2-queue-mailer/src/migrations"
Настройка
Майлер зависит от нескольких компонентов, которые так же необходимо настроить и передать их названия через конфигурацию.
queue
В первую очередь зависимость касается непосредственно компонента постановки задания в очередь. Подробно про его конфигурацию можно почитать в официальной документации: Yii2-Queue
mailer
Вторым важным компонентом является непосредственно Swift Mailer. Через который будет осуществляться отправка почты из задания в очереди. К тому же данный компонент может отправить письмо автоматически через него, если не будет настроен компонент очереди или процедура постановки в очередь прервется и не будет выполнена. Данное поведение можно отключить через конфигурацию.
attachment
Третий желаемый компонент находится в этом пакете и является хранилищем и обработчиком прикрепляемых (внедряемых) файлов к письму. Поскольку мейлер имеет возможность прикрепить файлы не сохраненные на диске, хранить такие файлы в базе данных не выгодно и они могут быть сохранены во временном каталоге и в дальнейшем успешно прикреплены к оригинальному сообщению. Так же компонент может продублировать все файлы во временный каталог, если необходимо сохранять текущие версии файлов для отправки.
'attachment' => [
'class' => 'chulakov\queuemailer\AttacheStorage',
'storageAll' => false,
'storageClear' => true,
'storagePath' => '@runtime/attachments',
]
- storageAll - Копировать ли все прикрепляемые файлы. По умолчанию
false. - storageClear - Необходимость удаление всех временных файлов сообщения после отправки. По умолчанию
true. - storagePath - Папка в которую будут сохранены прикрепляемые файлы. По умолчанию
@runtime/attachments. Для каждого письма со вложениями будет создана своя папка.
queuemailer
Настройка компонента отложенной отправки почты имеет множество похожих параметров при настройке:
'queuemailer' => [
'class' => 'chulakov\queuemailer\Mailer',
'messageClass' => 'chulakov\queuemailer\Message',
'storageClass' => 'chulakov\queuemailer\models\QueueMail',
'jobClass' => 'chulakov\queuemailer\jobs\MessageJob',
// Базовый мейлер
'viewPath' => '@common/mail',
'useFileTransport' => false,
'messageConfig' => [
...
],
// Настройка компонентов
'attacheComponent' => 'attachment',
'mailerComponent' => 'mailer',
'componentName' => 'queuemailer',
'queueComponent' => 'queue',
],
- messageClass - Класс сообщения, используемый для компоновки сообщения перед отправкой.
- storageClass - Класс модели, в которой будет храниться вся информация о сформированном сообщении.
Должен реализовать интерфейс
MailStorageInterface, реализуя методfindById, который должен вернуть модель с сохраненными данными по ее ID. - jobClass - Класс задания, которое будет обрабатывать отправку сообщения из очереди.
Должно реализовать интерфейс
MessageJobInterface, реализуя методcreateдля создания задания. Класс можно поменять на лету, перед каждой отправкой сообщения, через функциюsetJobClass. - viewPath - Устанавливает папку с шаблонами письма. При отсроченной отправке, данную настройку
достаточно указать только в данном компоненте, поскольку
mailerComponentне будет осуществлять генерацию письма, а только заниматься его отправкой. - useFileTransport - Если данный параметр установлен в
true, то компонент не будет пытаться отправить почту через компонентmailerComponent, а только пытаться сохранить его в базу. - messageConfig - Может так же, как и базовый класс сообщения, получать все настройки письма,
но так же приобретает возможность установить конфигурацию для сериализатора полем
serializer. Компонент сериализации должен реализовать интерфейсSerializerInterface. - attacheComponent - Компонент обработки прикрепляемых файлов. Если не будет настроен, то будет возможность прикреплять только существующие файлы на диске.
- mailerComponent - Имя компонента для отправки почты. Должен ссылаться на
Yii2-swiftmailer. Если компонент не будет настроен, сообщения, что не попадут в очередь, вернутfalseпри отправке сообщения. Так же может не настраиваться при указании'useFileTransport' => true, поскольку не будет осуществляться попытки отправить реальное сообщение. - componentName - Имя текущего или другого компонента, доступного из консольного приложения. Название будет храниться в базе с заданием и использоваться при извлечении сообщения и отправки почты через вложеннего мейлера (@see mailerComponent, который обязательно должен быть настроен в консольном приложении).
- queueComponent - Имя компонента, используемого для постановки сообщения в очередь.
Если все сообщения планируется отправлять через отложенную отправку,
возможно настроить компонент мейлером по умолчанию, зарегестрировав его под именем mailer
и передав, наспример, в 'mailerComponent' => 'swiftmailer'.
oleg-chulakov-studio/yii2-queue-mailer 适用场景与选型建议
oleg-chulakov-studio/yii2-queue-mailer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.49k 次下载、GitHub Stars 达 4, 最近一次更新时间为 2017 年 12 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 oleg-chulakov-studio/yii2-queue-mailer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 oleg-chulakov-studio/yii2-queue-mailer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 2.49k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2017-12-11