Add punycode email support

This commit is contained in:
Alex Sherman 2021-06-30 14:16:50 +05:00
parent c344b91d84
commit 550c5abd6c
4 changed files with 45 additions and 4 deletions

View file

@ -0,0 +1,33 @@
module EmailAddressConverter
module_function
def punycode_to_unicode(email)
return email if domain(email) == 'not_found'
local = local(email)
domain = SimpleIDN.to_unicode(domain(email))
"#{local}@#{domain}"&.downcase
end
def unicode_to_punycode(email)
return email if domain(email) == 'not_found'
local = local(email)
domain = SimpleIDN.to_ascii(domain(email))
"#{local}@#{domain}"&.downcase
end
private
def domain(email)
Mail::Address.new(email).domain&.downcase || 'not_found'
rescue Mail::Field::IncompleteParseError
'not_found'
end
def local(email)
Mail::Address.new(email).local&.downcase || email
rescue Mail::Field::IncompleteParseError
email
end
end

View file

@ -20,4 +20,6 @@ namespace :verify_email do
.by_domain(args[:domain_name])
verifications_by_domain.map { |ver| VerifyEmailsJob.perform_later(ver.id) }
end
desc 'Starts verifying email jobs with check level and '
end