tboileau / email-bundle
此包已被弃用,不再维护。未建议替代包。
Symfony EmailBundle 简化了您的邮件发送管理。
1.0
2019-02-08 13:25 UTC
Requires
- php: >=7.1.3
- symfony/dependency-injection: ^3.4|^4.0
- symfony/http-kernel: ^3.4|^4.0
- symfony/options-resolver: ^3.4|^4.0
- symfony/swiftmailer-bundle: ^3.2
- symfony/yaml: ^3.4|^4.0
Requires (Dev)
- symfony/framework-bundle: ^3.4|^4.0
- symfony/phpunit-bridge: ^3.4|^4.0
This package is auto-updated.
Last update: 2021-04-02 09:07:09 UTC
README
EmailBundle 是管理邮件的更简单方法。
安装
使用 Symfony Flex 的应用程序
打开命令行控制台,进入您的项目目录并执行
$ composer require tboileau/email-bundle
不使用 Symfony Flex 的应用程序
步骤 1:下载包
打开命令行控制台,进入您的项目目录并执行以下命令以下载此包的最新稳定版本
$ composer require tboileau/email-bundle
此命令要求您已全局安装 Composer,如 Composer 文档中的安装章节中所述。
步骤 2:启用包
然后,将包添加到项目 app/AppKernel.php
文件中注册的包列表中,以启用该包
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = [ // ... new TBoileau\Bundle\EmailBundle\TBoileauEmailBundle() ]; // ... } // ... }
配置
首先,您需要在 services.yaml
中使用此标签 t_boileau.email
定义您的邮件
services: # ... App\Email\FooEmail: tags: - { name: t_boileau.email }
如果您有多个邮件,您可以在一次操作中定义所有邮件
services: # ... App\Email\: resource: '../src/Email' tags: - { name: t_boileau.email }
创建您的第一封邮件
如果您习惯了使用 SwiftMailer,您不会感到迷茫,否则您可以查看 文档。
<?php namespace App\Email; use Symfony\Component\OptionsResolver\OptionsResolver; use TBoileau\Bundle\EmailBundle\Builder\MessageBuilderInterface; use TBoileau\Bundle\EmailBundle\Email\AbstractEmail; /** * Class FooEmail * * @package TBoileau\Bundle\EmailBundle\Tests\Email * @author Thomas Boileau <t-boileau@email.com> */ class FooEmail extends AbstractEmail { public function buildMessage(MessageBuilderInterface $builder, array $options): void { $builder ->setSubject("subject") ->setFrom("t-boileau@email.com") ->setTo("t-boileau@email.com") ->setBody("Hello ".$options["name"]) ; } public function configure(OptionsResolver $resolver): void { $resolver->setRequired("name"); } }
如您所见,在 configure
方法中,您可以指定一些选项。在这种情况下,我们需要一个 名称,我们可以在 buildMessage
中使用它。
在邮件中注入服务
您不需要在 services.yaml
中定义您的依赖项。从 3.4 版本开始,您可以使用自动装配和类型提示来自动注入您的服务
<?php // ... use TBoileau\Bundle\EmailBundle\Email\AbstractEmail; use Twig\Environment; class FooEmail extends AbstractEmail { /** * @var Environment */ private $twig; /** * FooEmail constructor. * @param Environment $twig */ public function __construct(Environment $twig) { $this->twig = $twig; } }
在控制器中发送邮件
要发送您的邮件,您需要在控制器中注入 TBoileau\Bundle\EmailBundle\Factory\MailerFactoryInterface
,然后只需调用 send
方法即可
<?php // src/Controller/DefaultController.php namespace App\Controller; use App\Email\FooEmail; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use TBoileau\Bundle\EmailBundle\Factory\MailerFactoryInterface; class DefaultController extends AbstractController { /** * @Route("/", name="default") */ public function index(MailerFactoryInterface $mailerFactory) { $mailerFactory->create(FooEmail::class)->send([ "name" => "your name" ]); // ... } }