diff --git a/app/jobs/verify_emails_job.rb b/app/jobs/verify_emails_job.rb index faefa4cee..4095697b6 100644 --- a/app/jobs/verify_emails_job.rb +++ b/app/jobs/verify_emails_job.rb @@ -1,7 +1,7 @@ class VerifyEmailsJob < ApplicationJob discard_on StandardError - def perform(email:, check_level: 'mx') + def perform(email:, check_level: 'mx', single_check: false) contact = Contact.find_by(email: email) return logger.info "Contact #{email} not found!" if contact.nil? @@ -11,7 +11,7 @@ class VerifyEmailsJob < ApplicationJob validate_check_level(check_level) logger.info "Trying to verify contact email #{email} with check_level #{check_level}" - contact.verify_email(check_level: check_level) + contact.verify_email(check_level: check_level, single_email: single_check) rescue StandardError => e handle_error(e) end diff --git a/lib/tasks/verify_domain.rake b/lib/tasks/verify_domain.rake new file mode 100644 index 000000000..c800719c8 --- /dev/null +++ b/lib/tasks/verify_domain.rake @@ -0,0 +1,29 @@ +require 'optparse' +require 'rake_option_parser_boilerplate' +require 'syslog/logger' +require 'active_record' + +SPAM_PROTECT_TIMEOUT = 30.seconds + +task verify_domain: :environment do + options = { + domain_name: nil, + check_level: 'mx', + spam_protect: false, + } + banner = 'Usage: rake verify_domain -- [options]' + options = RakeOptionParserBoilerplate.process_args(options: options, + banner: banner, + hash: opts_hash) + + + domain = Domain.find_by(name: options[:domain_name]) + check_level = options[:check_level] + + domain.domain_contacts.each do |dc| + dc.contact.verify_email(check_level: check_level, single_email: true) + + Rails.logger.info "Validated contact with code #{dc.contact.code} and email #{dc.contact.email} of #{domain.name} domain" + Rails.logger.info "Result - #{dc.contact.validation_events.last.success}" + end +end