diff options
author | Go MAEDA <maeda@farend.jp> | 2023-10-07 03:43:00 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2023-10-07 03:43:00 +0000 |
commit | 43873746bae72f620d4813977447ea59db37fbe5 (patch) | |
tree | 65021caf56e2f75b5c3932cb6449d5e46c1b0325 | |
parent | 090323b7a0863e6ca4cf85272bfab308056f0841 (diff) | |
download | redmine-43873746bae72f620d4813977447ea59db37fbe5.tar.gz redmine-43873746bae72f620d4813977447ea59db37fbe5.zip |
Replace custom EMAIL_REGEXP with URI::MailTo::EMAIL_REGEXP for more accurate email validation (#36969).
Patch by Go MAEDA.
git-svn-id: https://svn.redmine.org/redmine/trunk@22332 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/email_address.rb | 4 | ||||
-rw-r--r-- | app/models/setting.rb | 2 | ||||
-rw-r--r-- | test/unit/email_address_test.rb | 4 |
3 files changed, 6 insertions, 4 deletions
diff --git a/app/models/email_address.rb b/app/models/email_address.rb index 5a0f32abe..cc9064e04 100644 --- a/app/models/email_address.rb +++ b/app/models/email_address.rb @@ -20,8 +20,6 @@ class EmailAddress < ActiveRecord::Base include Redmine::SafeAttributes - EMAIL_REGEXP = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+(?:(?:xn--[-a-z0-9]+)|(?:[a-z]{2,})))\z/i - belongs_to :user after_update :destroy_tokens @@ -32,7 +30,7 @@ class EmailAddress < ActiveRecord::Base after_destroy_commit :deliver_security_notification_destroy validates_presence_of :address - validates_format_of :address, :with => EMAIL_REGEXP, :allow_blank => true + validates_format_of :address, :with => URI::MailTo::EMAIL_REGEXP, :allow_blank => true validates_length_of :address, :maximum => User::MAIL_LENGTH_LIMIT, :allow_nil => true validates_uniqueness_of :address, :case_sensitive => false, :if => Proc.new {|email| email.address_changed? && email.address.present?} diff --git a/app/models/setting.rb b/app/models/setting.rb index 81f121db4..a44f92ce3 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -187,7 +187,7 @@ class Setting < ActiveRecord::Base if settings.key?(:mail_from) begin mail_from = Mail::Address.new(settings[:mail_from]) - raise unless EmailAddress::EMAIL_REGEXP.match?(mail_from.address) + raise unless URI::MailTo::EMAIL_REGEXP.match?(mail_from.address) rescue messages << [:mail_from, l('activerecord.errors.messages.invalid')] end diff --git a/test/unit/email_address_test.rb b/test/unit/email_address_test.rb index 2cba7bbad..6fa1d7882 100644 --- a/test/unit/email_address_test.rb +++ b/test/unit/email_address_test.rb @@ -64,4 +64,8 @@ class EmailAddressTest < ActiveSupport::TestCase assert email.valid? end end + + def test_should_reject_invalid_email + assert_not EmailAddress.new(address: 'invalid,email@example.com').valid? + end end |