gpt4 book ai didi

php - 如何在发送前获取模板化电子邮件的呈现正文?

转载 作者:行者123 更新时间:2023-12-04 07:43:37 25 4
gpt4 key购买 nike

我想在发送之前获取电子邮件的呈现。

我用 htmlTemplatecontext 创建了一个 TemplatedEmail,它可以很好地发送,但是如何获取生成的带有上下文的模板以将其保存在数据库? (客户需求)

我尝试了 getBody() 但似乎只能使用文本模板,因为我得到 A message must have a text or an HTML part or attachments.

$email = new TemplatedEmail();
$email->htmlTemplate($htmlTemplate);
$email->from($from)->to(...$to)->subject($subject);
$email->context($context);

dd($email->getBody());

我想使用 render 方法,但我在服务中,不确定它是否是存储在数据库中的好方法。

最佳答案

Symfony 仅在实际发送消息时通过 Event Listener 呈现消息.负责渲染的类是 BodyRendererfrom the Twig Bridge .

但没有什么能阻止您自己呈现消息。

你有模板和上下文变量,所以你可以简单地在你发送的任何地方注入(inject) Twig,将模板呈现为一个字符串,然后用它做任何你需要的事情。

您也可以注册自己的MessageEvent::class 监听器,将其设置为低于the one registered by the Twig Bundle 的优先级(它使用默认优先级)所以它在那个之后执行,然后您可以访问消息正文,因为它已经被呈现了。这(非常)稍微复杂一些,但您会获得一些性能,因为您不会渲染模板两次。

使用哪种方法取决于您的应用程序、您的约束等。但重要的一点是要意识到您将在过程的哪一部分找到实际渲染的 body ,或者如果您需要在此之前自己渲染它.

关于php - 如何在发送前获取模板化电子邮件的呈现正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67317329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com