floor12/yii2-module-mailing

为yii2项目提供的邮件模块。

0.1.13 2019-03-01 10:46 UTC

This package is auto-updated.

Last update: 2024-09-26 01:06:05 UTC


README

Build Status Latest Stable Version Latest Unstable Version Total Downloads License

本模块用于发送大量邮件(包括应用程序用户和任意列表)。它跟踪已打开的邮件(如果启用了图像加载),还跟踪邮件中的打开链接。

邮件发送可能通过以下方式实现:

  • 直接在创建邮件时输入的任意电子邮件地址列表;
  • 预先构建的列表(可以在模块管理界面中构建,但通常更方便动态自行构建);
  • 从应用程序的ActiveRecord模型中提取地址。

安装

安装模块

执行命令

$ composer require floor12/yii2-module-mailing

或添加到composer.json文件的"required"部分

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

执行迁移以创建所需表

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

如果之前未安装本模块依赖的floor12\files\Module模块,则创建@app/storage文件夹,并赋予Web服务器写入权限,然后执行模块文件的迁移

$ ./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 - 发送邮件的电子邮件地址。

  • fromName - 邮件发送者姓名。

  • htmlTemplate - 项目中用于邮件的模板名称。

  • domain - 由于队列通过控制台启动,而控制台不了解网站域名,因此请指定应用程序域名,以便跟踪打开的邮件和链接。

  • linkedModels - ActiveRecord类数组,需要从中获取收件人地址。这些类应实现floor12\mailing\interfaces\MailingRecipientInterface

  • unsubscribeRoute - 到取消订阅操作的路径(用户会被标记为已取消订阅),通常不需要修改。

启动队列

要启动队列,需要执行命令

$./yii mailing/queue

建议将其添加到cron中,每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;
    }
    ...

其他详细信息可以在源代码中找到。