eightmarq / mail-template-bundle
邮件模板组件有助于轻松构建邮件。
v0.7.0
2024-08-06 20:15 UTC
Requires
- php: >=8.3
- schvoy/base-entity-bundle: ^1.0.0
- symfony/framework-bundle: ^7.1
- symfony/mailer: ^7.1
- symfony/translation: ^7.1
- symfony/twig-bundle: ^7.1
- tijsverkoyen/css-to-inline-styles: ^2.2.7
- twig/twig: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.58
- phpunit/phpunit: ^11.1
- symfony/runtime: ^7.1
- symfony/yaml: ^7.1
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
)。您只需要定义subject
和body
参数。这些可以是文本或翻译键。
如果您使用自定义邮件模板(覆盖: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
- 邮件附件