erwane / cakephp-libs
此包最新版本(2.0.6)没有提供许可证信息。
Erwane CakePHP 库
2.0.6
2022-06-10 13:36 UTC
Requires
- php: ^7.2 || ^8.0
- cakephp/cakephp: ^4.0
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.0
- php-parallel-lint/php-parallel-lint: ^1.2
- phpro/grumphp: ^v1.0
- phpunit/phpunit: ^9.0 || ^8.0
README
邮件发送器
邮件发送器类旨在简化电子邮件模板的自定义。
想象一下,你想要允许你的App用户或管理员自定义他们的电子邮件。使用这些类,你可以在模板中设置一些允许的变量,用户可以使用 {{USER_NAME}}
语法在电子邮件中使用它。
所有变量都需要通过 setAllowedVars()
允许,并且是引用的。没有注入风险。
邮件发送器
use Ecl\Mailer\Mailer; use Cake\ORM\Entity; $mailer = new Mailer(); $mailer ->setAllowedVars(['USER_NAME']) ->setViewVars([ 'user' => new Entity(['name' => 'User Name']), ]) ->setEmailFormat('text') ->deliver('Hello {{USER_NAME}}');
这将发送以下内容的文本电子邮件
Hello User Name
这,还可以与可重复使用的邮件发送器和模板一起使用。
namespace App\Mailer; use Ecl\Mailer\Mailer; class UserMailer extends Mailer { public function welcome($user) { $this ->setTo($user->email) ->setSubject(sprintf('Welcome %s', $user->name)) ->setAllowedVars(['USER_NAME']) ->set(['user' => $user]); } } // templates/email/html/welcome.php <p>Hi {{USER_NAME}}</p>
邮件发送器添加了一个新方法 setAllowedVars(array): self
,用于模板变量替换,是必需的。
渲染器
如果你想要预先填充一个 wysiwyg 文本区域,可以使用渲染器而不需要 Ecl\Mailer\Mailer
。
use Ecl\Mailer\Renderer; $invoice = $this->Invoices->get(1, ['contain' => ['Customers']]); // Get template from DB (or templates dir) /** @var \App\Model\Entity\EmailTemplate $emailTemplate */ $emailTemplate = $this->EmailTemplates ->find() ->where(['type' => 'invoice_send']) ->first(); $body = ''; if ($emailTemplate && $emailTemplate->body) { $renderer = new Renderer(); $rendered = $renderer ->setAllowedVars([ 'INVOICE_NUM', 'CUSTOMER_TITLE', ]) ->set([ 'invoice' => $invoice, 'customer' => $invoice->customer, ]) ->render($emailTemplate->body, ['html']); $body = $rendered['html']; }
$body
现在包含格式化的电子邮件主体,所有允许的变量都由实体中的值替换。
<!-- Template --> <p>Hi {{CUSTOMER_TITLE}}.</p> <p> Please find your invoice <b>{{INVOICE_NUM}}<b> attached. </p> <!-- Body for wysiwyg --> <p>Hi Company name.</p> <p> Please find your invoice <b>FC-202102-01234<b> attached. </p>