oleg-chulakov-studio / yii2-queue-mailer
通过队列发送消息的Mailer。
1.0.5
2020-09-18 11:45 UTC
Requires
- php: >=5.6.0
- yiisoft/yii2: ~2.0.13
- yiisoft/yii2-queue: ^2.0
This package is auto-updated.
Last update: 2024-09-18 20:34:27 UTC
README
通过队列发送邮件的组件。
该组件完全实现了Mailer的所有功能,并且可以作为主Mailer使用,不会丢失任何功能。
安装
要将组件连接到您的代码,需要在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"
配置
Mailer依赖于多个组件,也需要配置并通过配置传递它们的名称。
queue
首先,这个依赖关系直接涉及到任务队列组件的配置。有关其配置的详细信息,可以参考官方文档:Yii2-Queue
mailer
第二个重要的组件是Swift Mailer。它将通过任务队列发送邮件。此外,如果未配置队列组件或队列设置中断,该组件也可以自动发送邮件。此行为可以通过配置禁用。
attachment
第三个需要的组件位于此包中,是邮件附件的存储和处理程序。由于Mailer可以附加未保存到磁盘上的文件,因此将这些文件存储在数据库中并不划算,它们可以保存在临时目录中,并成功附加到原始消息。此外,该组件还可以将所有文件复制到临时目录,如果需要保存文件的当前版本以供发送。
'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 - 当前或可以从控制台应用程序访问的其他组件的名称。名称将存储在数据库中,并在通过嵌套邮件器提取消息和发送邮件时使用(请参阅
mailerComponent
,它必须在控制台应用程序中配置)。 - queueComponent - 用于将消息放入队列的组件名称。
如果所有消息都计划通过延迟发送发送,则可以配置默认的邮件器组件,通过注册名为mailer
并传递,例如,在'mailerComponent' => 'swiftmailer'
中。