Skip to content

fix(email): reinforcement of the validator and skip invalid address when sending alerts#78

Open
kevin-blackbird wants to merge 1 commit intowebgriffe:masterfrom
kevin-blackbird:feature/email-format-verification
Open

fix(email): reinforcement of the validator and skip invalid address when sending alerts#78
kevin-blackbird wants to merge 1 commit intowebgriffe:masterfrom
kevin-blackbird:feature/email-format-verification

Conversation

@kevin-blackbird
Copy link

Hi,

On the last version for Sylius 1.X, version 4.1.0, we had a bug blocking the sending of alerts.

Indeed, if the email format was incorrect, we had an RfcComplianceException.
A person try an injection with this kind of email : [email protected]'&&sleep(27*1000)*ckfqsx&&' just by changing the input type from email to text, the backend Email validator accept this email.
To prevent that I add it the redtriction mode : Email::VALIDATION_MODE_STRICT

On alert sending, I had a try catch to no stop alert sending on email error.

If you accept this PR, can we have an 4.1.1 or 4.2.0 tags for Sylius 1 pls ?

Have a nice day !

Kind regards,
Kévin

@kevin-blackbird
Copy link
Author

Hi,

Is there an update with this fix planned for soon ?

Kind regards,
Kévin

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can just try/catch the line that throw the exception and do a continue with a log before it. Please remove also the comment, if you want you can add the line Invalid email address, continue to the next one to the log with the exception message

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens email handling for back-in-stock subscriptions to prevent invalid/malicious email strings from being accepted and to avoid alert-sending failures caused by RFC compliance exceptions during email delivery.

Changes:

  • Switch subscription form email validation to Symfony Email::VALIDATION_MODE_STRICT.
  • Catch RfcComplianceException during alert sending to continue processing remaining subscriptions.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
src/Form/SubscriptionType.php Tightens validation for the subscription email field using strict RFC validation.
src/Command/AlertCommand.php Prevents the alert command from stopping on RFC-compliance email errors by catching RfcComplianceException.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -44,27 +45,32 @@ protected function execute(InputInterface $input, OutputInterface $output): int
//I think that this load in the long time can be a bottle necklace
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling/wording: "bottle necklace" should be "bottleneck" (and add a space after //) to keep the inline comment understandable.

Suggested change
//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

Copilot uses AI. Check for mistakes.
'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']),
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the email validation behavior (strict RFC mode). Since the repo already has Behat coverage around guest subscription flows, it would be good to add a scenario that submits a clearly invalid/malicious email (like the one from the PR description) and asserts the form shows a validation error and no subscription/success email is created, to prevent regressions.

Copilot uses AI. Check for mistakes.
Comment on lines +71 to 74
} catch (RfcComplianceException $e) {
// Invalid email address, continue to the next one
$this->logger->warning($e->getMessage());
}
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the RfcComplianceException handler, the subscription remains with notify=false, so the command will hit the same invalid address on every run (repeated exceptions + noisy logs). Consider either removing the invalid subscription (as is done when channel/productVariant is missing) or marking it as notified/failed so it won’t be retried, and log with structured context (e.g., subscription id/email) instead of only the raw exception message.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants