【问题标题】:Responsive Email Template in Twig fileTwig 文件中的响应式电子邮件模板
【发布时间】:2015-12-03 20:58:27
【问题描述】:

尝试在 Twig 文件中构建响应式电子邮件模板。在 Symfony 应用程序中使用 Swiftmailer 发送电子邮件。到目前为止,我遇到的两个问题是图像仅在我在本地主机上查看电子邮件时显示,而不是在 Gmail、收件箱或 Yahoo! 中查看电子邮件时显示!

使用绝对路径链接图像(当前)。此外,尝试了具有相同结果的相对路径。

<img src="{{ absolute_url(asset('bundles/coreecommerce/images/logo.png')) }}">

问题 #2 是包含样式表。我在样式表中有一些媒体查询,我试图将其包含在这样的 head 标记中。

  {% block stylesheets %}
    <link href="{{ asset('bundles/coreecommerce/css/email.css') }}" rel="stylesheet" />
  {% endblock %}

我在这里做错了。只是不确定是什么?你可以在 Twig 中为响应式电子邮件包含样式表、内联样式吗?

感谢您的帮助。

【问题讨论】:

  • Gmail、Inbox 和 Yahoo 都将对电子邮件使用外部资产阻止,以防止从唯一生成的 URL(例如 http://www.malicious.com/spamlink.php?email=bob@hackme.com)中检测到视图。解决此问题的方法是将您的图像进行 base64 编码到电子邮件中,并使用内联 CSS。
  • 内联 CSS 是指 style 属性,不是 style 标签。
  • 会是这样吗?
  • 像什么?如果您在谈论您在问题中所写的内容,则不。一点也不。

标签: symfony twig


【解决方案1】:

要在您的 html 邮件中嵌入图片,您应该查看this section of the documentation

要向您展示 twig 的示例,您可以从以下内容开始:

<?php

$message = \Swift_Message::newInstance();

$fileToEmbed = 'a path to image file';

$templateParams = [
    'fileToEmbed' => $message->embed(\Swift_Image::fromPath($fileToEmbed)),
];

// then compose the mail like this
$message
    // set subject etc...
    ->setBody($this->twigTemplating->render('yourMailTemplate.html.twig', $templateParams), 'text/html')
;

然后在你的树枝模板中,你只需创建一个带有模板变量的 IMG 标签:

<img src="{{ fileToEmbed }}">

所以 TL;DR,您只需要将 $message-&gt;embed(\Swift_Image::fromPath($fileToEmbed)) 返回值传递给您的邮件模板并将其用作 src 属性。


要在你的包中找到图像文件,你可以像这样使用Kernel::locateResource 方法(假设你的logo.png 位于CoreEcommerceBundle/Resources/public/images/ 目录中):

$fileToEmbed = $this->kernel->locateResource('@CoreEcommerceBundle/Resources/public/images/logo.png');

【讨论】:

  • 太棒了!谢谢你。现在让我的样式表包括在内。
  • @Brent 正如上面 cmets 中所述,您永远不应该在邮件模板中链接到外部 CSS。而是内联它们。有一个非常简洁的工具使我的 Mailchimp 将您的 &lt;style&gt; 样式内联到 html 标签中:templates.mailchimp.com/resources/inline-css
猜你喜欢
  • 2015-11-11
  • 2013-09-16
  • 2019-12-02
  • 2017-04-28
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
相关资源
最近更新 更多