src/Subscriber/Mail/MogelmailSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Subscriber\Mail;
  3. use App\Dictionary\MailProviderStatus;
  4. use App\Entity\MailProvider;
  5. use App\Event\Mail\MogelmailSuspectMatchEvent;
  6. use App\Service\System\MailProviderService;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class MogelmailSubscriber implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @var MailProviderService
  12.      */
  13.     protected $mailProviderService;
  14.     /**
  15.      * MogelmailSubscriber constructor.
  16.      */
  17.     public function __construct(MailProviderService $mailProviderService)
  18.     {
  19.         $this->mailProviderService $mailProviderService;
  20.     }
  21.     public function getProviderService(): MailProviderService
  22.     {
  23.         return $this->mailProviderService;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             MogelmailSuspectMatchEvent::class => [
  29.                 ['onMailSuspectForTrashCreateProviderEntity'0],
  30.             ],
  31.         ];
  32.     }
  33.     /**
  34.      * @throws \Doctrine\ORM\ORMException
  35.      * @throws \Doctrine\ORM\OptimisticLockException
  36.      */
  37.     public function onMailSuspectForTrashCreateProviderEntity(MogelmailSuspectMatchEvent $event)
  38.     {
  39.         $domain $event->getDomain();
  40.         $service $this->getProviderService();
  41.         if ($service->findByName($domain)) {
  42.             return;
  43.         }
  44.         $provider = new MailProvider();
  45.         $provider->setName($domain);
  46.         $provider->setDomains(join("\n", [$domain]));
  47.         $provider->setBounceStatus(MailProviderStatus::MOGELMAIL);
  48.         $provider->setAntiSpamLoginDelay(7200); // 2 hours delay for mogelmail detected providers
  49.         $service->storeEntity($provider);
  50.     }
  51. }