ttskch/twigged-swiftmessage-builder

基于 Twig 模板的 Swift_Message 构建服务。

2.0.0 2016-09-23 08:59 UTC

This package is not auto-updated.

Last update: 2024-09-10 21:52:04 UTC


README

Build Status Latest Stable Version Total Downloads

TwiggedSwiftMessageBuilder 类允许您进行以下操作

  • 创建 Twig 模板化的 Swift_Message
  • 从未设置样式的 HTML 和 CSS 字符串创建内联样式的 HTML 邮件
  • 将某些图像文件嵌入到消息体中

需求

  • PHP 5.3+

入门

首先将此依赖项添加到您的 composer.json

{
    "require": {
        "ttskch/twigged-swiftmessage-builder": "~2.0"
    }
}

然后您可以像下面这样发送 Twig 模板化的电子邮件

{# email.txt.twig #}

{% block from %}no-reply@example.com{% endblock %}
{% block from_name %}[Example]{% endblock %}
{% block subject %}Welcome to [Example]!{% endblock %}

{% block body %}
Hello [Example] World!
{% endblock %}
// in your application.

$builder = new \Ttskch\TwiggedSwiftMessageBuilder\TwiggedSwiftMessageBuilder($tiwg);  // $twig is an instance of \Twig_Environment class.

$message = $builder->buildMessage('email.txt.twig');
$message->setTo('hoge@example.com');

$mailer->send($message);    // $mailer is an instance of \Swift_Mailer class.

在 Twig 模板中,您可以通过使用 {% block [field-name] %}{% endblock %} 定义许多内容。以下字段可以定义:

  • 发件人
  • 发件人姓名
  • 收件人
  • 抄送
  • 密送
  • 回复地址
  • 主题
  • 正文

在 Twig 模板中使用变量

当然,您可以将变量传递到 Twig 模板中,如下所示

{# email.txt.twig #}

{% block subject %}Welcome to {{ site_title }}!{% endblock %}
// in your application.

$builder = new \Ttskch\TwiggedSwiftMessageBuilder\TwiggedSwiftMessageBuilder($tiwg);

$message = $builder->buildMessage('email.txt.twig', array(
    'site_title' => 'FooBar Service',
));
$message->setTo('hoge@example.com');

$mailer->send($message);

使用内联样式的 HTML 邮件

您可以从未设置样式的 HTML 和 CSS 字符串创建内联样式的 HTML。为了使 HTML 邮件的收件人能够在 Gmail 中接收它,您必须创建内联样式的 HTML 正文。

// in your application.

$builder = new \Ttskch\TwiggedSwiftMessageBuilder\TwiggedSwiftMessageBuilder($tiwg);

$message = $builder->buildMessage('email.html.twig');

$style = file_get_contents('/path/to/style.css');

$message = $builder->setInlineStyle($message, $style);

$mailer->send($message);

注意

此功能内部使用 mb_convert_encoding()'auto'。因此,如果您使用此功能,您必须强烈建议在 php.ini 中设置 mbstring.language 或在前面调用 mb_language('your_language')

注意

此功能内部使用 mb_convert_encoding()'auto'。因此,您必须在 php.ini 中设置 mbstring.language 或在前面执行 mb_language('Japanese')

将某些图像文件嵌入到消息体中

您可以将图像嵌入到消息体中,如下所示

{# email.html.twig #}

{% block body %}
<img src="{{ embed_image(image_path) }}"/>
{% endblock %}
// in your application.

$builder = new \Ttskch\TwiggedSwiftMessageBuilder\TwiggedSwiftMessageBuilder($tiwg);

$message = $builder->buildMessage('email.html.twig', array(
    'image_path' => '/path/to/image/file',
));

// you can get renderable html with base64 encoded images. (In case you want to print preview.)
$renderableHtml = $builder->renderBody($message);

// you must finalize embedding before send message.
$message = $builder->finalizeEmbedding($message);

$mailer->send($message);

享受!

请参阅 功能测试 以了解基本用法。