Symfony 5 Mailer未定义名为 "htmlTemplate "的方法。

问题描述 投票:0回答:1

我想用 Symfony Mailer 在一个个人项目里面。我在我的控制器里面做了一个函数send Mail,当表单提交的时候调用这个函数。

    function sendEmail(MailerInterface $mailer, $useremail)
    {
        $email = (new Email())
            ->from('[email protected]')
            ->to($useremail)
            ->subject('Great !')
            ->htmlTemplate('emails/signup.html.twig');

        $mailer->send($email);
        return $email;
    }

     /**
     * @Route("/", name="homepage")
     */
    public function index(Request $request, MailerInterface $mailer)
    {
        $mailing = new Mailing();
        $form = $this->createForm(MailingType::class, $mailing);

        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {

            $task = $form->getData();


            $this->sendEmail($mailer , $request->request->get('mailing')['email']);

            return $this->redirectToRoute('homepage');

        }

当我提交表单时,一切正常,但当它进入我的 sendEmail 函数出现以下错误。

试图调用 "Symfony\Component\Mime\Email "类的未定义方法 "htmlTemplate"。

你知道为什么会出现这个错误吗?我不明白发生了什么。

谢谢你。

php symfony mailer
1个回答
2
投票

要使用模板,你需要使用TemplatedEmail,就像在《Symfony Mailer》中描述的那样。文件

use Symfony\Bridge\Twig\Mime\TemplatedEmail;
function sendEmail(MailerInterface $mailer, $useremail)
{
  $email = (new TemplatedEmail())
    ->from('[email protected]')
    ->to($useremail)
    ->subject('Great !')
    ->htmlTemplate('emails/signup.html.twig');

  $mailer->send($email);
  return $email;
}

1
投票

你需要使用 "TemplatedEmail "而不是 "Email "类。

© www.soinside.com 2019 - 2024. All rights reserved.