From 80f5ec601461b212172775c04b0d247953681b38 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 11 Jun 2021 15:26:04 +0300 Subject: [PATCH] added excluded for force delete domains --- .../collect_invalid_validation_contacts.rake | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/tasks/collect_invalid_validation_contacts.rake b/lib/tasks/collect_invalid_validation_contacts.rake index aa831036b..227c6a2b5 100644 --- a/lib/tasks/collect_invalid_validation_contacts.rake +++ b/lib/tasks/collect_invalid_validation_contacts.rake @@ -4,10 +4,10 @@ namespace :collect_invalid_contacts do prepare_csv_file Contact.all.each do |contact| - result = Truemail.validate(contact.email, with: :mx) - if !result.result.success && !validate_puny_code(contact.email) - collect_data_for_csv(contact, result.result) - end + email = convert_to_unicode(contact.email) + result = Truemail.validate(email, with: :mx) + + collect_data_for_csv(contact, result.result) unless result.result.success end end end @@ -45,13 +45,12 @@ end def collect_data_for_csv(contact, result) domains = find_related_domains(contact) + domains.reject! { |dom| dom.statuses.include? DomainStatus::FORCE_DELETE } CSV.open('invalid_emails.csv', 'a') do |csv| domains.each do |domain| attrs = [] - attrs.push(domain.name) - attrs.push(contact.email) - attrs.push(result.errors) + attrs.push(domain.name, contact.email, result.errors) csv << attrs end @@ -68,6 +67,12 @@ def prepare_csv_file csv << headers end -def validate_puny_code(email) - email.include?('xn--') +def convert_to_unicode(email) + original_domain = Mail::Address.new(email).domain + decoded_domain = SimpleIDN.to_unicode(original_domain) + + original_local = Mail::Address.new(email).local + decoded_local = SimpleIDN.to_unicode(original_local) + + "#{decoded_local}@#{decoded_domain}" end