Add support of punycode domains in emails

This commit is contained in:
Alex Sherman 2020-06-15 15:57:44 +05:00
parent 56ac816dd1
commit b4369bdcd0
6 changed files with 77 additions and 21 deletions

View file

@ -1,10 +1,13 @@
class FillEmailVerifications < ActiveRecord::Migration[6.0]
def up
registrar_billing_emails = Registrar.pluck(:billing_email).uniq.reject(&:blank?).map(&:downcase)
registrar_emails = Registrar.pluck(:email).uniq.reject(&:blank?).map(&:downcase)
contact_emails = Contact.pluck(:email).uniq.reject(&:blank?).map(&:downcase)
include Concerns::EmailVerifable
emails = (contact_emails + registrar_emails + registrar_billing_emails).uniq
def up
registrar_billing_emails = Registrar.pluck(:billing_email).uniq.reject(&:blank?)
registrar_emails = Registrar.pluck(:email).uniq.reject(&:blank?)
contact_emails = Contact.pluck(:email).uniq.reject(&:blank?)
emails = (contact_emails + registrar_emails + registrar_billing_emails)
emails = emails.map{ |email| punycode_to_unicode(email) }.uniq
result = emails.map do |email|
{ email: email, domain: domain(email) }
@ -15,10 +18,4 @@ class FillEmailVerifications < ActiveRecord::Migration[6.0]
def down
EmailAddressVerification.delete_all
end
def domain(email)
Mail::Address.new(email).domain || 'not_found'
rescue Mail::Field::IncompleteParseError
'not_found'
end
end