codekanzlei / cake-notifications
CakePHP3 通知插件
Requires
- php: >=7.2
- cakephp/cakephp: >=4.0.0
- josegonzalez/cakephp-queuesadilla: ^0.7.0
Requires (Dev)
- phpstan/phpstan: ^0.11
- phpunit/phpunit: ^6.0
- scherersoftware/coding-standard: ^4.0.0
- 4.x-dev
- v4.0.0-rc3
- v4.0.0-rc2
- v4.0.0-rc1
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.x-dev
- v2.2.1
- v2.2.0
- v2.1.2
- v2.1.1
- v2.1
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- 1.1.x-dev
- v1.1.33
- v1.1.32
- v1.1.31
- v1.1.30
- v1.1.29
- v1.1.28
- v1.1.27
- v1.1.26
- v1.1.25
- v1.1.24
- v1.1.23
- v1.1.22
- v1.1.21
- v1.1.20
- v1.1.19
- v1.1.18
- v1.1.17
- v1.1.16
- v1.1.15
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1
- v1.0.5
- v1.0.3
- v1.0.2
- dev-remove-wrong-error-level
- dev-master
This package is auto-updated.
Last update: 2024-09-24 03:14:47 UTC
README
这是一个 CakePHP 3.8 通知插件,可以通过 cakephp-queuesadilla 任务队列异步发送电子邮件。
要求
- CakePHP Queuesadilla 插件 3.0
- PHP 7.1+
安装
1. 使用 composer 安装插件
composer require codekanzlei/cake-notifications
2. 在您的 src/Application.php
中加载插件
$this->addPlugin('Notifications');
3. 配置 config/app.php
在配置文件中设置您的默认区域设置,例如在 app.php
中。此配置是必需的,如果未设置,则会导致异常。
'Notifications' => [
'defaultLocale' => 'en_US'
]
您还可以覆盖队列选项,如 attempts
、attempts_delay
、delay
、expires_in
和 queue
。
'Notifications' => [
'queueOptions' => [
'queue' => 'notification'
]
]
这不会影响以后使用 queueOptions()
。您仍然可以在此处覆盖选项。
此外,请确保设置 cakephp-queuesadilla 插件配置。您可以在以下位置找到示例配置: https://cakephp-queuesadilla.readthedocs.io/en/latest/。
或者,您可以在您的引擎文件(vendor/josegonzalez/queuesadilla/src/josegonzalez/Queuesadilla/Engine/*Engine.php
)中的 $baseConfig
属性内找到可用的配置选项。
重要:请将 "date.timezone" 在您的 cli/php.ini 中设置为适当的值,否则带有 "delay_until" 的通知可能会在错误的时间发送。
用法
电子邮件
EmailNotification 完全兼容 CakePHP 电子邮件。
将以下内容添加到您想要发送电子邮件的类中
use Notifications\Notification\EmailNotification;
然后简单地创建一个新的 EmailNotification 对象。
$email = new EmailNotification();
$email->to('john.doe@example.com')
->setSubject('Send with cake-notifications v2')
->send('Hello :)');
您可以使用 CakePHP Email 类提供的所有方法链式调用 https://book.cakephp.com.cn/3.0/en/core-libraries/email.html
此外,以下函数可用
send( array|string|null $content null )
立即发送电子邮件。仍然可用 before- 和 afterSend 回调
setLocale( string|null $locale null )
设置通知的区域设置。如果为 null,则使用 Configure::read('Notifications.defaultLocale')
push()
将电子邮件推送到队列以异步发送
setQueueOptions( array $options null )
您可以从 cakephp-queuesadilla 插件更改一些默认选项。
支持选项
attempts
失败后通知将再次执行多少次attempts_delay
通知再次执行需要多长时间(以秒为单位)delay
第一次执行通知需要多长时间(以秒为单位)expires_in
通知将在队列中保持多长时间(以秒为单位)queue
队列名称
setBeforeSendCallback( array|string|null $class null, array $args [] )
将可调用的参数传递给 $class
。支持静态和非静态函数。
$email->beforeSendCallback(['Foo', 'bar'], ['first_param', 'second_param'])
这将调用在发送电子邮件之前在 Foo 类中定义的 bar
方法,并传递两个参数。
在发送电子邮件之前操作 EmailNotification 实例,可以返回一个函数,该函数接受通知实例引用并更改配置,例如更改配置文件。然后 bar
方法可能如下所示
public function bar($first_param, $second_param)
{
// do something
return function (&$instance) {
$instance->profile([
'from' => 'email@example.com'
]);
};
}
setAfterSendCallback( array|string|null $class null, array $args [] )
将可调用的参数传递给 $class
。支持静态和非静态函数。
$email-> afterSendCallback(['Foo::bar'], ['first_param', 'second_param'])
这将调用在发送电子邮件之后在 Foo 类中定义的静态 bar
方法,并传递两个参数。
addBeforeSendCallback( array|string|null $class null, array $args [] )
在beforeSend中添加一个额外的回调函数。
addAfterSendCallback( array|string|null $class null, array $args [] )
在afterSend中添加一个额外的回调函数。