src/EventListener/EmailSenderListener.php line 15

Open in your IDE?
  1. <?php
  2. // src/EventListener/EmailSenderListener.php
  3. namespace App\EventListener;
  4. use Symfony\Component\Mailer\Event\MessageEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Mime\Email;
  7. use Symfony\Component\Mime\Address;
  8. use App\Service\DynamicHostService;
  9. class EmailSenderListener implements EventSubscriberInterface
  10. {
  11.     public function __construct(private DynamicHostService $dynamicHostService, ) {}
  12.     // Méthode qui sera appelée lors de l'événement de l'envoi de l'email
  13.     public function onEmailSend(MessageEvent $event)
  14.     {
  15.         $email $event->getMessage(); // Récupère l'email
  16.         $company $this->dynamicHostService->getCompany();
  17.         // Vérifier si l'email est une instance de Email
  18.         // if ($email instanceof Email) {
  19.         //     // Logique pour définir dynamiquement l'expéditeur
  20.         //    $dynamicSender = $this->getDynamicSender();
  21.         //    if ($company !== null) {
  22.         //         $email->from(new Address($dynamicSender, $company->getName()));
  23.         //    }else{
  24.         //         $email->from(new Address($dynamicSender, 'MyFlow'));
  25.         //    }
  26.         // }
  27.     }
  28.     // Méthode pour obtenir dynamiquement l'expéditeur
  29.     private function getDynamicSender(): string
  30.     {
  31.         // Remplace par ta logique pour récupérer l'expéditeur dynamique
  32.         return 'caroline.b@my-flow.fr'// Par exemple, en fonction de l'utilisateur connecté ou d'une configuration
  33.     }
  34.     // Déclare les événements auxquels le Listener va s'abonner
  35.     public static function getSubscribedEvents(): array
  36.     {
  37.         return [
  38.             // Écoute l'événement MessageEvent::class
  39.             MessageEvent::class => 'onEmailSend'// Manipuler l'événement MessageEvent
  40.         ];
  41.     }
  42. }
  43. ?>