Pourrais-tu nous montrer ton code, comment tu effectue t'es envoie de mail ? Tu as essaye de debuger ton code avec la console de dev après l'envoie de ton mail ?
<?php
namespace App\Controller;
use App\Entity\Membres;
use App\Form\RegistrationFormType;
use App\Security\EmailVerifier;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mime\Address;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
class RegistrationController extends AbstractController
{
private EmailVerifier $emailVerifier;
public function __construct(EmailVerifier $emailVerifier)
{
$this->emailVerifier = $emailVerifier;
}
#[Route('/register', name: 'app_register')]
public function register(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): Response
{
if ($this->getUser()) {
return $this->redirectToRoute('app_home');
}
$user = new Membres();
$form = $this->createForm(RegistrationFormType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// encode the plain password
$user->setPassword(
$userPasswordHasher->hashPassword(
$user,
$form->get('plainPassword')->getData()
)
);
$entityManager->persist($user);
$entityManager->flush();
// generate a signed url and email it to the user
$this->emailVerifier->sendEmailConfirmation('app_verify_email', $user,
(new TemplatedEmail())
->from('sym@identifiant.odns.fr')
->to($user->getEmail())
->subject('Please Confirm your Email')
->htmlTemplate('registration/confirmation_email.html.twig')
);
// do anything else you need here, like send an email
//return $this->redirectToRoute('app_home');
$this->addFlash('success', 'votre compte a bien été créé');
return $this->render('registration/register_confirm.html.twig');
}
return $this->render('registration/register.html.twig', [
'registrationForm' => $form->createView(),
]);
}
#[Route('/verify/email', name: 'app_verify_email')]
public function verifyUserEmail(Request $request, TranslatorInterface $translator): Response
{
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
// validate email confirmation link, sets User::isVerified=true and persists
try {
$this->emailVerifier->handleEmailConfirmation($request, $this->getUser());
} catch (VerifyEmailExceptionInterface $exception) {
$this->addFlash('verify_email_error', $translator->trans($exception->getReason(), [], 'VerifyEmailBundle'));
return $this->redirectToRoute('app_register');
}
// @TODO Change the redirect on success and handle or remove the flash message in your templates
$this->addFlash('success', 'Your email address has been verified.');
return $this->redirectToRoute('app_register');
}
}
Alors que la page contact fonctionne parfaitement
ContactController.php
<?php
namespace App\Controller;
use App\Form\ContactType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
#use Symfony\Component\Mime\Email;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Routing\Annotation\Route;
class ContactController extends AbstractController
{
#[Route('/contact', name: 'app_contact')]
public function index(Request $request, MailerInterface $mailer)
{
$form = $this->createForm(ContactType::class);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$contactFormData = $form->getData();
// $email = (new Email())
// ->from('hello@example.com')
// ->to($contactFormData['email'])
// ->subject('Demande de contact sur votre site de ' . $contactFormData['email'])
// ->text($contactFormData['name'] . ' vous a envoyé le message suivant: ' . $contactFormData['message']);
//
// $mailer->send($email);
$email = (new TemplatedEmail())
->from('sym@identifiant.odns.fr')
->to($contactFormData['email'])
->subject('Demande de contact sur votre site')
->htmlTemplate('emails/contact.html.twig')
->context([
'name' => $contactFormData['name'],
'message' => $contactFormData['message']
]);
$mailer->send($email);
$this->addFlash('success', 'Votre message a été envoyé');
// return $this->redirectToRoute('app_home');
}
return $this->render('contact/index.html.twig', [
'form' => $form->createView()
]);
}
}
Il me semble qu'il manque quelque chose comme $mailer->send() dans RegistrationController, non ? Il y a le commentaire qui dit de le faire, mais je ne vois pas l'action en elle-même…
Pour s'assurer que les outils fonctionnent et sont bien configurés, je mettrais déjà un breakpoint au début de l'action — comme dit précédemment.
Et ensuite, je le mettrais (ou me rendrais) dans EmailVerifier, ligne 24, pour commencer. Pas à pas, voir ce qui est effectué, surtout entrer dans l'exécution de send() pour voir le résultat retourné mais actuellement non vérifié. Si tu n'y passes pas, c'est probablement qu'une des conditions n'est pas remplie, on aura le temps de voir laquelle et pourquoi.
J'arrive après la tempête, mais non, j'utilise VS Code.
Au vu de ce que tu nous dis, je doute que changer de sous-domaine (mais pas de domaine) change quoi que ce soit. Si par contre tu as dû non seulement changer de sous-domaine, mais aussi de sous-domaine, alors oui, cela peut avoir une influence.
Donc c'est bien un changement de domaine, vu que tu est désormais sur sous-domaine.tonsite.truc et que tu étais avant sur sous-domaine.trucmuche.o2switch.chose.
Pour des raisons de sécurité, les hébergeurs ne laissent plus nécessairement envoyer des mails quand l'adresse web et le nom de domaine d'envoi ne coïncident pas.
While(true)