Handle invalid emails in DomainExpireMailer#expired, move logging from job to mailer

#186
This commit is contained in:
Artur Beljajev 2016-11-23 21:20:28 +02:00
parent a5c0333a5d
commit e6e3ab9e1e
4 changed files with 78 additions and 43 deletions

View file

@ -4,18 +4,6 @@ class DomainExpireEmailJob < Que::Job
return if domain.registered?
log(domain)
DomainExpireMailer.expired(domain: domain, registrar: domain.registrar).deliver_now
end
private
def log(domain)
message = "Send DomainExpireMailer#expired email for domain ##{domain.id} to #{domain.primary_contact_emails.join(', ')}"
logger.info(message)
end
def logger
Rails.logger
end
end

View file

@ -1,9 +1,38 @@
class DomainExpireMailer < ApplicationMailer
def expired(domain:, registrar:)
@domain = DomainPresenter.new(domain: domain, view: view_context)
@registrar = RegistrarPresenter.new(registrar: registrar, view: view_context)
@domain = domain_presenter(domain: domain)
@registrar = registrar_presenter(registrar: registrar)
recipient = filter_invalid_emails(emails: domain.primary_contact_emails, domain: domain)
subject = default_i18n_subject(domain_name: domain.name)
mail(to: domain.primary_contact_emails, subject: subject)
logger.info("Send DomainExpireMailer#expired email for domain ##{domain.id}" \
" to #{domain.primary_contact_emails.join(', ')}")
mail(to: recipient, subject: subject)
end
private
def domain_presenter(domain:)
DomainPresenter.new(domain: domain, view: view_context)
end
def registrar_presenter(registrar:)
RegistrarPresenter.new(registrar: registrar, view: view_context)
end
# Needed because there are invalid emails in the database, which have been imported from legacy app
def filter_invalid_emails(emails:, domain:)
emails.keep_if do |email|
valid = EmailValidator.new(email).valid?
unless valid
logger.info("Unable to send DomainExpireMailer#expired email for domain ##{domain.id}" \
" to invalid recipient #{email}")
end
valid
end
end
end