maba / mail-renderer-bundle
Symfony 扩展包,简化电子邮件发送
Requires
- php: >=5.3.3
- jimbojsb/emogrify: dev-master#5f323d2880e5df7de273c15e2a98e7c77a3cfba3
- nickcernis/html-to-markdown: ^2.2
- symfony/assetic-bundle: ^2.6
- symfony/framework-bundle: ^2.3
- symfony/swiftmailer-bundle: ^2.3
- twig/twig: ~1.0
This package is auto-updated.
Last update: 2024-09-10 19:59:17 UTC
README
Symfony 扩展包,将一些库集合起来,简化电子邮件发送过程
- 将 twig 模板渲染为获取电子邮件的主题和内容
- 如果模板中不可用,则将 HTML 内容转换为纯文本
- 设置默认的“发件人”电子邮件和名称
- 如果配置了 Assetic,则获取邮件消息的 CSS
- 在 HTML 的
style
属性内联 CSS,或添加<styles>
标签 - 使用 swift mailer 发送消息
安装
通过 composer 添加
composer require maba/mail-renderer-bundle jimbojsb/emogrify:@dev
注册扩展包
new Maba\Bundle\MailRendererBundle\MabaMailRendererBundle(),
在 config.yml
中配置
maba_mail_renderer: css_assets: inline: mail imports: mail_imports from: email: info@example.com name: My Awesome Company assetic: assets: mail: inputs: - @bootstrap_css - @ApplicationBundle/Resources/less/styles.less mail_imports: inputs: - %kernel.root_dir%/Resources/public/css/mail-imports.css
css_assets
节点为可选,同样 Assetic 的使用也是可选的。
使用方法
代码
/** @var FormattedMessageMailer $mailer */ $mailer = $this->get('maba_mail_renderer.formatted_message_mailer'); $mailer->sendMessage('customer@example.com', 'ApplicationBundle:Email:welcome.html.twig', array( 'username' => 'customer123', 'activationLink' => 'http://www.example.com/activate/ABC123', ));
Twig 模板
{# ApplicationBundle:Email:welcome.html.twig #} {% block subject %}Hello {{ username }}, welcome to example.com!{% endblock %} {% block body_html %} <div class="header">Hello {{ username }},</div> <div class="content"> You've registered on example.com. Here you can make lots of stuff: <ul> <li>Stuff</li> <li>More stuff</li> </ul> </div> <div class="important"> To activate your account <a class="btn btn-primary" href="{{ activationLink }}">click here</a> </div> <div class="footer">See ya!</div> {% endblock %}
就是这样!
所有分配给类的 CSS 规则将内联到 HTML 中的 style
属性中。
扩展使用
模板
只解析模板中的这些块:subject
、body_html
和 body_text
。其中 subject
和至少其中一个其他是必需的。模板中的任何其他块或内容都将被忽略。
如果提供了 body_text
,则它将用作邮件消息的纯文本版本。
此外,toEmail
变量也传递给 twig 模板,它等于指定的收件人。
建议如果您的邮件中有定义的结构,使用单个布局 twig 文件。例如
{# :Email:layout.html.twig #} {% block body_html %} <div class="header">Good afternoon,</div> {% block content %}{% endblock %} <div class="footer">See ya!</div> <a href="{{ get_unsubscribe_link(toEmail) }}">Unsubscribe</a> {% endblock %}
{# ApplicationBundle:Email:welcome.html.twig #} {% extends ':Email:layout.html.twig' %} {% block subject %}...{% endblock %} {% block content %} ... {% endblock %}
样式
inline
和 imports
配置节点中的值采用 Assetic 资产名称,您应该使用 Assetic 配置来配置这些。
inline
用于将 CSS 规则应用于消息 HTML 结果 - 向 HTML 节点添加 style
属性,这将触发相应的 CSS 规则。这是必要的,因为一些电子邮件阅读器既不支持 <styles>
也不支持 <link>
(例如 GMail)。
imports
用于在邮件消息本身中创建带有 CSS 内容的 <styles>
标签。这应该尽可能简短 - 通常仅用于无法内联的规则,如下所示
@import url("//fonts.googleapis.com/css?family=Ubuntu:400,400italic,700,700italic&subset=latin,latin-ext");
这就是为什么它在配置中被称为 imports
的原因。
为什么使用 <styles>
而不是 <link>
?为了避免加载远程资源,这也是默认情况下最常禁用的。
更改创建的消息
在渲染器中使用与 sendMessage
相同参数的 createMessage
,更改或添加任何所需的字段,然后手动使用 swift mailer 发送。