Php 发送电子邮件时出错[Symfony mailerBundle]
我正在用symfony 4建立一个网站,今天我尝试用symfony的emailBundle发送电子邮件,我也使用mailgun bundle作为传输工具。 一切都配置得很好 当我使用->text()或->html()的经典方式发送电子邮件时,一切都正常,但当我使用细枝模板发送电子邮件时,会出现以下错误: 无法发送电子邮件:需要至少一个“文本”或“html” 指定的参数(代码400) 这是邮件发送的代码部分:Php 发送电子邮件时出错[Symfony mailerBundle],php,symfony,email,twig,symfony4,Php,Symfony,Email,Twig,Symfony4,我正在用symfony 4建立一个网站,今天我尝试用symfony的emailBundle发送电子邮件,我也使用mailgun bundle作为传输工具。 一切都配置得很好 当我使用->text()或->html()的经典方式发送电子邮件时,一切都正常,但当我使用细枝模板发送电子邮件时,会出现以下错误: 无法发送电子邮件:需要至少一个“文本”或“html” 指定的参数(代码400) 这是邮件发送的代码部分: <?php $email = (new Templated
<?php
$email = (new TemplatedEmail())
->from(new NamedAddress('blabla','blabla'))
->to($user->getEmail())
->subject('Account registration')
->htmlTemplate('emails/signup.html.twig')
->context([
'firstName' => $user->getFirstName(),
'email' => $user->getEmail(),
'url' => $_ENV['blabla'].'/account'
]);
$transport = new MailgunTransport($_ENV['blabla'],$_ENV['blabla']);
$mailer = new Mailer($transport);
$mailer->send($email);
?>
提前感谢如果未使用
TemplatedEmail
呈现消息,则需要使用关联的Symfony\Bridge\Twig\Mime\BodyRenderer
手动呈现消息
然后,您的代码将类似于:
使用Symfony\Bridge\Twig\Mime\BodyRenderer;
使用细枝\环境;
//$twig,需要注入twig\Environment的实例
$email=(新的TemplatedEmail());
//[...]
$mailer=新的mailer($transport);
$renderer=newbodyrenderer($twig);
$renderer->render($email);
$mailer->send($email);
请参见BodyRenderer的测试用例:
谢谢@smwhr的帮助,但我找到了解决方案 因此,如果有人感兴趣,解决方案是: 删除以下两行:
$transport = new YourTransportMethod($_ENV['blabla'],$_ENV['blabla']);
$mailer = new Mailer($transport);
并在方法声明中使用mailer接口,如下所示:
blabla(LoginAuthenticator $authenticator, MailerInterface $mailer): Response
工作守则:
$email = (new TemplatedEmail())
->from(new NamedAddress('blabla','blabla'))
->to(new NamedAddress($user->getEmail(),$user->getFirstName()))
->subject('Account registration')
->htmlTemplate('emails/signup.html.twig')
->context([
'firstName' => $user->getFirstName(),
'email' => $user->getEmail(),
'url' => $_ENV['blabla'].'/account'
]);
$mailer->send($email);
我希望这个答案能帮助你,你有没有试着用提供的上下文打印
电子邮件/signup.html.twig
的内容?当调用htmlTemplate()
返回一个空内容时,会引发此错误。是的,我创建了一个测试路由,用上下文呈现“emails/signup.html.twig”,一切看起来都正常。但是,当我进行var_转储($email->getHtmlBody())时,我会得到空响应;当我进行var_转储($email->getHtmlTemplate())时,我会得到“emails/signup.html.twig”。