diff --git a/app/interactions/actions/simple_mail_validator.rb b/app/interactions/actions/simple_mail_validator.rb index 7d945e875..8d7107602 100644 --- a/app/interactions/actions/simple_mail_validator.rb +++ b/app/interactions/actions/simple_mail_validator.rb @@ -3,6 +3,8 @@ module Actions extend self def run(email:, level:) + email = decode_email_punycode(email) + result = truemail_validate(email: email, level: level) result = validate_for_a_and_aaaa_records(email) if !result && level == :mx result @@ -32,6 +34,12 @@ module Actions logger.info "Validated #{type} record for #{email}. Validation result - #{result}" end + def decode_email_punycode(email) + local_part, domain = email.split('@') + decoded_domain = Addressable::IDNA.to_unicode(domain) + "#{local_part}@#{decoded_domain}" + end + def logger @logger ||= Rails.logger end diff --git a/test/interactions/email_check_test.rb b/test/interactions/email_check_test.rb index e3b1a8a17..adecd37d4 100644 --- a/test/interactions/email_check_test.rb +++ b/test/interactions/email_check_test.rb @@ -96,6 +96,13 @@ class EmailCheckTest < ActiveSupport::TestCase assert_equal contact_two.validation_events.count, 3 end + def test_should_test_email_with_punnycode + email = "info@xn--energiathus-mfb.ee" + result = Actions::SimpleMailValidator.run(email: email, level: :mx) + + assert result + end + private def trumail_result