sendEmailConfirmation('tvdt_verify_email', $user, new TemplatedEmail() ->to($user->email) ->subject($this->translator->trans('Please Confirm your Email')) ->htmlTemplate('backoffice/registration/confirmation_email.html.twig'), ); return true; } catch (TransportExceptionInterface $transportException) { $this->logger->error($transportException->getMessage()); return false; } } /** @throws TransportExceptionInterface */ public function sendEmailConfirmation(string $verifyEmailRouteName, User $user, TemplatedEmail $email): void { $signatureComponents = $this->verifyEmailHelper->generateSignature( $verifyEmailRouteName, $user->id->toRfc4122(), $user->email, ['id' => $user->id], ); $context = $email->getContext(); $context['signedUrl'] = $signatureComponents->getSignedUrl(); $context['expiresAtMessageKey'] = $signatureComponents->getExpirationMessageKey(); $context['expiresAtMessageData'] = $signatureComponents->getExpirationMessageData(); $email->context($context); $this->mailer->send($email); } public function handleEmailConfirmation(Request $request, User $user): void { $this->verifyEmailHelper->validateEmailConfirmationFromRequest($request, $user->id->toRfc4122(), $user->email); $user->isVerified = true; $this->entityManager->persist($user); $this->entityManager->flush(); } }