<?php
// src/EventListener/EmailSenderListener.php
namespace App\EventListener;
use Symfony\Component\Mailer\Event\MessageEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Address;
use App\Service\DynamicHostService;
class EmailSenderListener implements EventSubscriberInterface
{
public function __construct(private DynamicHostService $dynamicHostService, ) {}
// Méthode qui sera appelée lors de l'événement de l'envoi de l'email
public function onEmailSend(MessageEvent $event)
{
$email = $event->getMessage(); // Récupère l'email
$company = $this->dynamicHostService->getCompany();
// Vérifier si l'email est une instance de Email
// if ($email instanceof Email) {
// // Logique pour définir dynamiquement l'expéditeur
// $dynamicSender = $this->getDynamicSender();
// if ($company !== null) {
// $email->from(new Address($dynamicSender, $company->getName()));
// }else{
// $email->from(new Address($dynamicSender, 'MyFlow'));
// }
// }
}
// Méthode pour obtenir dynamiquement l'expéditeur
private function getDynamicSender(): string
{
// Remplace par ta logique pour récupérer l'expéditeur dynamique
return 'caroline.b@my-flow.fr'; // Par exemple, en fonction de l'utilisateur connecté ou d'une configuration
}
// Déclare les événements auxquels le Listener va s'abonner
public static function getSubscribedEvents(): array
{
return [
// Écoute l'événement MessageEvent::class
MessageEvent::class => 'onEmailSend', // Manipuler l'événement MessageEvent
];
}
}
?>