ite / mail-bundle
提供使用电子邮件模板发送电子邮件的功能,以及减少生成最终电子邮件的功能
dev-master
2015-06-18 09:46 UTC
Requires
- php: >=5.4
- html2text/html2text: ~2.0
- symfony/symfony: ~2.3-dev
- tijsverkoyen/css-to-inline-styles: ~1.5
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 []; }