wemakecustom/swiftmailer-twig-bundle

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

WeMakeCustom SwiftMailer 与 Twig 之间的桥梁

安装: 329

依赖: 0

建议者: 0

安全: 0

星标: 3

关注者: 5

分支: 4

开放问题: 0

类型:symfony-bundle

v1.1 2017-11-29 23:37 UTC

This package is not auto-updated.

Last update: 2024-04-27 17:17:44 UTC


README

此包提供了一个使用 Twig 为 SwiftMailer 库创建邮件模板的简单方法。

此助手受到 FOSUB TwigSwiftMailer 的启发。

如果您使用 FOS 用户包,我们还提供了一种邮件服务替代方案以支持我们的附加功能。

安装

使用 Symfony

通过 composer 安装此扩展是最佳方式

首先,需要该包

composer require wemakecustom/swiftmailer-twig-bundle "^1.0"

其次,启用它

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new WMC\SwiftmailerTwigBundle\WMCSwiftmailerTwigBundle(),
        // ...
    );
}

最后,将 web_directory 参数配置为使用它

# config.yml

parameters:
    web_directory: %kernel.root_dir%/../web

这样,您就完成了。

FOS 用户包集成

# config.yml

fos_user:
    service:
        mailer: wmc.swiftmailer_twig.fosub

使用纯 Swiftmailer/Twig

通过 composer 安装此扩展是最佳方式

首先,需要该包

composer require wemakecustom/swiftmailer-twig-bundle "^1.0"

然后为 doctrine 的配置提供命名策略

<?php

$swiftMailerTemplateHelper = new \WMC\SwiftmailerTwigBundle\TwigSwiftHelper($twig, $web_directory);

使用方法

它允许 Swift_Message 通过 Twig 模板进行填充。模板期望三个块(subjectbody_htmlbody_text)。如果在 body_html 块中找到具有类 inline-image 的本地图像(即 src 属性以单个正斜杠 / 开头),它将在电子邮件中内联,以便一些电子邮件客户端更容易渲染图像。

此助手作为服务 wmc.swiftmailer_twig 提供。要使用它,使用这三个参数调用 populateMessage 方法

  1. Swift_Message 对象
  2. 模板名称
  3. 模板数据数组

此助手依赖于 Symfony 的组件 DomCrawler,Twig 和 SwiftMailer。

示例

$data = [];

// ...

$data['recipient'] = ['name' => 'Jonh Smith', 'email' => 'recipient@example.com'];

$message = $mailer->createMessage()->setTo(['recipient@example.com' => 'John Smith']);
$swiftMailerTemplateHelper->populateMessage($message, 'AppBundle:Mail:my_email.mail.twig', $data);
$mailer->send($message);
{# my_email.mail.twig #}

{% block subject -%}
   My email Subject
{%- endblock %}

{% block body_text %}
    Hello {{ recipient.name }},

    {# ... Awesome plain text email ... #}

    Best Regards,
    Keep being awesome!
{% endblock %}

{% block body_html %}
    <h3>Hello <strong>{{ recipient.name }}</strong>,</h3>

    <p>
         {# ... Awesome HTML email ... #}
    </p>

    <p>
        Best Regards,<br />
        <em>Keep being awesome!</em>
    </p>
{% endblock %}