eightmarq/mail-template-bundle

邮件模板组件有助于轻松构建邮件。

安装: 227

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

类型:symfony-bundle

v0.7.0 2024-08-06 20:15 UTC

This package is auto-updated.

Last update: 2024-09-06 20:27:41 UTC


README

邮件模板组件可以帮助从不同的源(Twig或数据库)构建和发送邮件。

安装

通过Composer安装

composer require schvoy/mail-template-bundle

在twig配置中注册模板

twig:
    ...
    paths:
        '%kernel.project_dir%/vendor/schvoy/mail-template-bundle/src/Resources/views': MailTemplateBundle

定义所需的环境变量

  • MAILER_SENDER_ADDRESS
  • MAILER_SENDER_NAME
  • MAILER_SIGNATORY

使用方法

基于Twig的邮件

基本上,如果您使用基于Twig的邮件,组件将使用默认的邮件模板(email_base_template)。您只需要定义subjectbody参数。这些可以是文本或翻译键。

如果您使用自定义邮件模板(覆盖:email_base_template配置),您可以在您的MailType(s)中添加更多参数,这些参数将在模板中可用。

    {{ __mailType.subject }}
    {{ __mailType.body }}
    {{ __mailType.customParameter }}

参数必须具有公共访问权限或公共方法才能访问

创建新的基于Twig的邮件类型

<?php

declare(strict_types=1);

namespace App\Mails;

use Schvoy\MailTemplateBundle\Mailer\AbstractMailType;
use Schvoy\MailTemplateBundle\Mailer\Engine\TwigBased;

class TestMailType extends AbstractMailType
{
    use TwigBased;

    protected string $subject = 'first_email.test.subject'; // Translation key

    protected string $body = 'first_email.test.body'; // Translation key
}

发送邮件

$testMail = $mailSender->getMailType(TestMailType::class);

$mailSender->send(
    $testMail,
    [
        new Recipient('test@example.com', 'Test user'),
        new Recipient('test-2@example.com'),
    ],
    [
        'parameters' => [
            '%test%' => 'Test parameter',
        ],
    ]
);

默认邮件(模板)参数

[
    '__greeting' => true,
    '__signature' => true,
    '__userName' => $recipient->getName() ?? false,
    '__mailType' => $mailType,
    '__translationDomain' => $this->parameterBag->get(
        sprintf('%s.%s', MailTemplateBundleExtension::ALIAS, 'translation_domain')
    ),
    '__locale' => 'en',
    'parameters' => [
        '%userName%' => $recipient->getName(),
        '%signatory%' => $this->parameterBag->get('mailer_signatory'),
    ],
]

配置参考

mailer_template_bundle:
    translation_domain: <string>
    email_base_template: <string>
    email_base_css_template: <string>

尚不支持 - TODO

  • 基于数据库的邮件类型
  • CC和BCC
  • 邮件附件