diff --git a/src/Command/AlertCommand.php b/src/Command/AlertCommand.php index bcf898b..d771156 100644 --- a/src/Command/AlertCommand.php +++ b/src/Command/AlertCommand.php @@ -12,6 +12,7 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Mime\Exception\RfcComplianceException; use Symfony\Component\Routing\RouterInterface; use Webgriffe\SyliusBackInStockNotificationPlugin\Entity\SubscriptionInterface; use Webgriffe\SyliusBackInStockNotificationPlugin\Repository\SubscriptionRepositoryInterface; @@ -41,10 +42,10 @@ protected function configure(): void protected function execute(InputInterface $input, OutputInterface $output): int { - //I think that this load in the long time can be a bottle necklace + // I think that this load in the long time can be a bottleneck $subscriptions = $this->backInStockNotificationRepository->findBy(['notify' => false]); foreach ($subscriptions as $subscription) { - $channel = $subscription->getChannel(); + $channel = $subscription->getChannel(); $productVariant = $subscription->getProductVariant(); if ($productVariant === null || $channel === null) { $this->backInStockNotificationRepository->remove($subscription); @@ -62,7 +63,13 @@ protected function execute(InputInterface $input, OutputInterface $output): int $productVariant->getProduct()?->isEnabled() === true ) { $this->router->getContext()->setHost($channel->getHostname() ?? 'localhost'); - $this->sendEmail($subscription, $productVariant, $channel); + + try { + $this->sendEmail($subscription, $productVariant, $channel); + } catch (RfcComplianceException $e) { + $this->logger->warning('Invalid email address, continue to the next one: ' . $e->getMessage()); + continue; + } $subscription->setNotify(true); $this->backInStockNotificationRepository->add($subscription); } diff --git a/src/Form/SubscriptionType.php b/src/Form/SubscriptionType.php index 4c60ddd..a2ed9f6 100644 --- a/src/Form/SubscriptionType.php +++ b/src/Form/SubscriptionType.php @@ -25,7 +25,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('email', EmailType::class, [ 'constraints' => [ new NotBlank([], null, null, null, ['webgriffe_sylius_back_in_stock_notification_plugin']), - new Email([], null, null, null, ['webgriffe_sylius_back_in_stock_notification_plugin']), + new Email(['mode' => Email::VALIDATION_MODE_STRICT], null, null, null, ['webgriffe_sylius_back_in_stock_notification_plugin']), ], ]) ->add('product_variant_code', HiddenType::class)