生成和发送HTML邮件

dev-master / 0.0.1.x-dev 2023-01-08 07:35 UTC

This package is auto-updated.

Last update: 2024-09-08 11:30:57 UTC


README

生成HTML邮件并发送给收件人的服务。生成过程类似于框架中的标准渲染。

将进行一系列改进,例如,选择邮件发送适配器类型等。

安装: composer require masterflash-ru/emailer

对于后台管理,提供编辑数据库记录的接口 - "从网站编辑邮件模板"。

安装后,请从data文件夹中加载数据库备份。

创建Emailer控制器插件

//обращение в контроллере
$this->Emailer($nameOrModel,$values, $toEmails, $options);

//если ничего не передавать, возращает сам объект 
$emailer=$this->Emailer();

$nameOrModel - ViewModel实例,如在控制器中,或在ZF3术语中为模板(输出脚本)的名称;首先在数据库中按名称搜索,如果找不到,则在文件中搜索。文件路径的指定方式与ZF3中相同;

$values - 包含模板值的数组,但如果$nameOrModel是字符串;

$toEmails - 收件人Email字符串或数组;

$options - 选项,数组,键:subject - 消息主题,mailfrom - 邮件回复地址

控制器插件Emailer的功能

在应用程序配置中应指定数据库连接配置'DefaultSystemDb',例如;

return [
    "databases"=>[
        //соединение с базой + имя драйвера
        'DefaultSystemDb' => [
            'driver'=>'MysqlPdo',
            //"unix_socket"=>"/tmp/mysql.sock",
            "host"=>"localhost",
            'login'=>"login",
            "password"=>"password",
            "database"=>"simba4",
            "locale"=>"ru_RU",
            "character"=>"utf8"
        ],
    ],

.....
];

重要提示

为了在HTML邮件中包含图片,应指定绝对地址,使用View助手ServerUrl(),例如;

<img src="<?=$this->ServerUrl($this->$this->basePath("image/pic.jpg"))?>" alt="">

在应用程序配置中声明DefaultSystemDb以与数据库交互

......
    "databases"=>[
        //соединение с базой + имя драйвера
        'DefaultSystemDb' => [
            'driver'=>'MysqlPdo',
            //"unix_socket"=>"/tmp/mysql.sock",
            "host"=>"localhost",
            'login'=>"root",
            "password"=>"**********",
            "database"=>"simba4",
            "locale"=>"ru_RU",
            "character"=>"utf8"
        ],
    ],
.....

与缓存交互的方式类似

.....
    'caches' => [
        'DefaultSystemCache' => [
            'adapter' => [
                'name'    => Filesystem::class,
                'options' => [
                    // Store cached data in this directory.
                    'cache_dir' => './data/cache',
                    // Store cached data for 3 hour.
                    'ttl' => 60*60*2 
                ],
            ],
            'plugins' => [
                [
                    'name' => Serializer::class,
                    'options' => [
                    ],
                ],
            ],
        ],
    ],
.....