Symfony 5 Почтовый неопределенный метод с именем "htmlTemplate" - PullRequest
0 голосов
/ 02 мая 2020

Я хочу использовать Symfony Mailer Внутри личного проекта. Идея заключается в том, что пользователь подписывается на новостную рассылку, после чего он получает письмо, подтверждающее, что он подписан. Я сделал функцию отправки почты внутри моего контроллера для вызова этой функции при отправке формы.

    function sendEmail(MailerInterface $mailer, $useremail)
    {
        $email = (new Email())
            ->from('mail@mail.exemple')
            ->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, появляются следующие ошибки:

Попытка вызова неопределенного метода с именем "htmlTemplate" класса "Symfony \ Component \ Mime \ Email".

Есть ли у вас какие-либо идеи о почему эта ошибка появляется? Я не пойму, что происходит.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Чтобы использовать шаблон, вам нужно использовать TemplatedEmail, как описано в документах

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

  $mailer->send($email);
  return $email;
}
1 голос
/ 02 мая 2020

Вам нужно использовать 'TemplatedEmail' чаще, чем класс 'Email'

...