visual-craft / mailer-bundle
Symfony 扩展包,提供创建和发送电子邮件的高级 API
v2.1.0
2020-08-03 12:19 UTC
Requires
- php: ^7.1
- symfony/framework-bundle: ~3.4|~4.0|~5.0
- symfony/options-resolver: ~3.4|~4.0|~5.0
- symfony/swiftmailer-bundle: ~3.0
Requires (Dev)
- phpunit/phpunit: ^7.5
- symfony/twig-bundle: ~3.4|~4.0|~5.0
Suggests
- symfony/twig-bundle: To use the twig for rendering mail body/subject
This package is auto-updated.
Last update: 2024-08-29 04:43:05 UTC
README
Symfony 扩展包,提供创建和发送电子邮件的高级 API
安装
步骤 1:安装 VisualCraftMailerBundle
$ composer require visual-craft/mailer-bundle
步骤 2:启用 VisualCraftMailerBundle
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new VisualCraft\Bundle\MailerBundle\VisualCraftMailerBundle(), ); // ... } // ... }
使用方法
创建邮件类型类
<?php namespace AppBundle\MailType; use VisualCraft\Bundle\MailerBundle\MailType\MailTypeInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class RegistrationMailType implements MailTypeInterface { public function configureOptions(OptionsResolver $optionsResolver) { // configure options which should be provided to buildMessage method $optionsResolver->setRequired(['to']); } public function buildMessage(\Swift_Message $message, array $options) { // build message $message ->setSubject('Registration') ->setTo($options['to']) ; } }
注册邮件类型服务
# services.yml services: app.mail_type.rgistration: class: AppBundle\MailType\RegistrationMailType tags: - { name: 'visual_craft_mailer.mail_type' }
发送电子邮件
<?php use AppBundle\MailType\RegistrationMailType; $mailer = $this->container->get('visual_craft_mailer.mailer'); $mailer->send(RegistrationMailType::class, [ 'to' => 'user@example.com', ]);
邮件类型
默认情况下,您需要将邮件类型类作为 $mailer->send
方法的第一个参数使用,若要更改此设置,请执行以下操作
# services.yml services: app.mail_type.rgistration: class: AppBundle\MailType\RegistrationMailType tags: # note for additional tag attribute 'type': - { name: 'visual_craft_mailer.mail_type', type: 'registration' }
<?php $mailer->send('registration', [ 'to' => 'user@example.com', ]);
使用 twig 模板生成邮件正文和主题
为了简化使用 twig 渲染邮件正文/主题,您应该做以下两件事
- 通过您的
MailType
实现VisualCraft\Bundle\MailerBundle\TwigAwareInterface
,扩展包将自动使用setTwig
方法将 twig 服务注入到您的邮件类型服务中。 - 通过您的
MailType
使用 traitVisualCraft\Bundle\MailerBundle\TwigMailRendererTrait
,这将添加setTwig
、renderBody
和renderSubject
方法。
示例
<?php namespace AppBundle\MailType; use VisualCraft\Bundle\MailerBundle\TwigAwareInterface; use VisualCraft\Bundle\MailerBundle\TwigMailRendererTrait; use VisualCraft\Bundle\MailerBundle\MailType\MailTypeInterface; class RegistrationMailType implements MailTypeInterface, TwigAwareInterface { use TwigMailRendererTrait; // ... /** * {@inheritdoc} */ public function buildMessage(\Swift_Message $message, array $options) { // ... $message // use twig to render subject ->setSubject($this->renderSubject('mail/registration_subject.html.twig', [ 'variable' => 'value', ])) // use twig to render body ->setBody($this->renderBody('mail/registration_body.html.twig', [ 'variable' => 'value', ])) ; // ... } }
测试
$ composer install $ vendor/bin/phpunit
许可证
本扩展包遵循 MIT 许可证发布。有关完整许可证,请参阅文件:LICENSE