tboileau/email-bundle

此包已被弃用,不再维护。未建议替代包。

Symfony EmailBundle 简化了您的邮件发送管理。

安装: 73

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

公开问题: 0

类型:symfony-bundle

1.0 2019-02-08 13:25 UTC

This package is auto-updated.

Last update: 2021-04-02 09:07:09 UTC


README

Build Status

SymfonyInsight

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"
        ]);
        
        // ...
    }
}