ite/mail-bundle

提供使用电子邮件模板发送电子邮件的功能,以及减少生成最终电子邮件的功能

安装: 16

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 7

分支: 0

公开问题: 0

类型:symfony-bundle

dev-master 2015-06-18 09:46 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:43:49 UTC


README

提供使用电子邮件模板发送电子邮件的功能,以及减少生成最终电子邮件的功能

安装和配置

使用 Composer 非常简单,运行

composer require ite/mail-bundle

配置示例

您可以配置默认的电子邮件发送者参数和使用电子邮件模板样式

ite_mail:
    bcc_email: %bcc_email%
    from_email: %support_email%
    support_email: %support_email%
    noreply_email: %noreply_email%
    template_folder: AcmeCoreBundle:Email/Template #folder with all email templates
    styles: ['@AcmeCoreBundle/Resources/public/less/email/style.less', '@AcmeCoreBundle/Resources/public/less/email/style2.less'] #additional styles for email templates will be generated to inline styles in end email
    translation_domain: email_subjects #provide translations for end email subjects

将 ITEMailBundle 添加到您的应用程序内核

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
            new ITE\MailBundle\ITEMailBundle(),
        // ...
    );
}

用法示例

添加扩展

根据上下文名称创建令牌

// src/Acme/CoreBundle/Extension/Mail
namespace Acme\CoreBundle\Extension\Mail;

use ITE\MailBundle\Extension\BaseExtension;
use ITE\MailBundle\Extension\TokenExtensionInterface;
use ITE\MailBundle\Token\Context;
use ITE\MailBundle\Token\Token;
use Symfony\Component\DependencyInjection\ContainerInterface;

class MainExtension extends BaseExtension implements TokenExtensionInterface
{

    private $twig;
    
    private $container;
    
    /**
     * @param ContainerInterface $container
     * @internal param $twig
     */
    function __construct(ContainerInterface $container)
    {
        $this->container = $container;
        $this->twig = $container->get('twig');
    }

    /**
     * Retrieve token list depend on token context
     *
     * @param Context $context
     *
     * @return Token[]
     */
    public function getTokens(Context $context)
    {
        $this->setContext($context);
        $data = $context->getData();
        switch ($context->getName()) {
            case 'test_context_name':
                return [
                    new Token('test_token', $data['someData'], 'Test Token'),
                ];
                break;
        }

        return [];
    }

    public function setContext(Context $context)
    {
        if ($context->getData()) {
            return null;
        }
    }

    /**
     * Retrieve global token list, not depended on context
     *
     * @return Token[]
     */
    public function getGlobals()
    {
        return [];
    }

} 

将扩展添加到服务

将邮件扩展添加到 services.yml

services:
    admin.mail.token.main_extension:
        class: Acme\CoreBundle\Extension\Mail\MainExtension
        arguments: [@service_container]
        tags:
            - {name: ite.mail.extension}

将模板添加到 AcmeCoreBundle:Email/Template 文件夹(template_folder 在 config.yml 中配置)

在 AcmeCoreBundle:Email/Template 文件夹中创建模板 test_template.html.twig

Hi User,
[test_token] {#This is the token name from Acme\CoreBundle\Extension\Mail\MainExtension#}

控制器

您可以使用模板 test_template.html.twig 发送电子邮件

// Acme\MainBundle\Controller\ArticleController.php

    public function sendAction()
    {
        $data = ['someData' => 123];
        $this
            ->get('ite.mail.manager')
            ->mail('test_template', 'some_email@mail.com', 'Some subject', [
                'token_context' => new Context($data, 'test_context_name')
            ]);

        return [];
    }