【发布时间】:2023-04-04 04:10:01
【问题描述】:
我有这个 PHP 代码(只使用 Twig + SwiftMailer):
# Load Twig and swiftmailer
require_once('lib/SwiftMailer/swift_required.php');
require_once('lib/Twig/Autoloader.php');
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('views');
$twig = new Twig_Environment($loader, array(
'cache' => 'cache',
));
$mailer = Swift_Mailer::newInstance(Swift_MailTransport::newInstance());
# Render twig template to a string
$template = $twig->loadTemplate('email.twig');
$body = $template->renderBlock('body', array('name' => $_POST["name"], 'letter' => $_POST["letter"]));
$message = Swift_Message::newInstance()
->setFrom("info@mydomain.com")
->setSubject("Hi, ".$_POST["name"]." blahblahblah")
->setBody($body, 'text/html')
->setTo($_POST["email"]);
# Send email, using PHP mail function
$retval = $mailer->send($message);
关于我的 email.twig 模板:
- 它包含 {{ name }} 和 {{ letter }}
- 它包含在 {% block body %} ... {% endblock %} 之间
- 它有一个
<style>节点,带有一些CSS 样式。
更新:链接到模板here
邮件发送正确,但有2个问题:
- 第二个变量字母没有被替换。它是空的,即使 $_POST['letter'] 不是空的
- 并非所有 CSS 样式都已正确应用。我想我不能在电子邮件中使用所有 CSS 属性。我说的对吗?
有什么线索吗?
【问题讨论】:
-
您可以发布您的模板吗?就 CSS 而言,我们也必须看到这一点。请记住,每个电子邮件客户端都以不同的方式应用 css。内联 CSS 可以提供帮助 - 检查 stackoverflow.com/questions/791070/…
-
抱歉耽搁了。我添加了指向模板的链接:raw.githubusercontent.com/jorgeas80/reyesmagos/master/views/…
-
您是否使用硬编码变量对此进行了测试:
array('name' => 'foo', 'letter' => 'bar'));?我没有在您的模板中看到任何奇怪的东西。 -
是的,也使用硬编码的变量进行了测试。同样的问题。只是名字被替换了。也许它与 CSS 相关(段落具有关联的 CSS 样式)。很奇怪……不过还是谢谢!
-
如果问题与 CSS 有关,您至少可以在电子邮件源代码中看到变量值。你能确认它在那里可见吗?
标签: php twig swiftmailer