/emails: add more search options.

Add options to search for invalid emails and emails from restricted
domains.
This commit is contained in:
evazion
2020-12-28 19:31:40 -06:00
parent a69ef8fa89
commit 7fc5845e72
3 changed files with 83 additions and 21 deletions

View File

@@ -3,6 +3,10 @@ require 'resolv'
module EmailValidator
module_function
# https://www.regular-expressions.info/email.html
EMAIL_REGEX = /\A[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\z/
POSTGRES_EMAIL_REGEX = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
IGNORE_DOTS = %w[gmail.com]
IGNORE_PLUS_ADDRESSING = %w[gmail.com hotmail.com outlook.com live.com]
IGNORE_MINUS_ADDRESSING = %w[yahoo.com]
@@ -80,10 +84,17 @@ module EmailValidator
"#{name}@#{domain}"
end
def nondisposable?(address)
return true if Danbooru.config.email_domain_verification_list.blank?
def is_valid?(address)
address.match?(EMAIL_REGEX)
end
def is_restricted?(address)
return false if Danbooru.config.email_domain_verification_list.blank?
domain = Mail::Address.new(address).domain
domain.in?(Danbooru.config.email_domain_verification_list.to_a)
!domain.in?(Danbooru.config.email_domain_verification_list.to_a)
rescue Mail::Field::IncompleteParseError
true
end
def undeliverable?(to_address, from_address: Danbooru.config.contact_email, timeout: 3)