我试图发送模板化的电子邮件,一切工作正常,只是文本或html,但当我尝试使用TemplatedEmail而不是电子邮件,我得到这个错误:“邮件必须包含文本或HTML部分或附件。",就好像我没有提供htmlTemplate一样。
设置如下
$mailer = new Mailer(Transport::fromDsn($_ENV['SMTP_DNS']));
$email = (new TemplatedEmail())
->from(new Address('my_address', 'NAME'))
->to($userEmail)
->subject('Some text...')
->htmlTemplate('user/email.html.twig');
$mailer->send($email);
树枝在那里,写得很对,我检查了100遍。
在twig.yaml中,路径也设置正确
twig:
default_path: '%kernel.project_dir%/templates'
twig本身只有一个<h1>Some text</h1>
标记,用于测试,仅此而已
我试着直接在控制器中注入邮件程序(基本上应该是这样的),但即使“MAILER_DSN”配置正确,也没有发送电子邮件。
1条答案
按热度按时间y0u0uwnf1#
正如我所怀疑的,如果您自己示例化Mail,并且希望集成Twig,那么您也需要将其连接起来。
Mailer组件有一个MessageListener,负责调用BodyRenderer,但在这里,我创建了自己的Mailer,没有在其中注入EventDispatcher(因此不会调度任何事件),也没有在此事件调度器中配置MessageListener。
如果您使用的是Symfony框架,请使用FrameworkBundle配置的邮件服务(它已经连接了MessageListener),而不是自己进行示例化,或者连接Twig集成。
为此,需要加载templates目录,并从其中创建环境,然后渲染它。
下面是代码:
这对我来说很有用,但是同样,使用FrameworkBundle配置的邮件服务要容易得多。
最终代码(硬方式):
最终代码(正常方式):
希望这对你有帮助:)))