qckanemoto/twigged-swiftmessage-builder

此包已被弃用,不再维护。作者建议使用ttskch/twigged-swiftmessage-builder包。

Twig模板Swift_Message构建服务。

2.0.0 2016-09-23 08:59 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:41:32 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'。因此,如果你使用此功能,你必须将mbstring.language在php.ini中设置或调用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);

享受吧!

查看功能测试以了解基本用法。