A very long list (119 261) of burner email domains, packaged for Ruby gems.
Copied with much respect from
- Wes Bos’s repo
- https://disposable.github.io/disposable-email-domains/domains.txt
- https://github.com/disposable/disposable/blob/master/blacklist.txt
Add this line to your application's Gemfile
:
gem "burner_email_db"
BurnerEmailDB.domains #=> ["0-00.usa.cc", "0-180.com", ...]
class User
validates :email, exclusion: { in: BurnerEmailDB.domains }
end
You could write a validator:
class BurnerEmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute_name, address)
return if address.blank? # validate presence separately
record.errors.add attribute_name, :disposable_email if disposable?(address)
end
private def disposable?(address_with_unknown_case)
address = address_with_unknown_case.downcase
BurnerEmailDB.domains.any? { |burner_domain| address.include? burner_domain }
end
end
Add translations:
---
ru:
errors:
messages:
disposable_email: в сервисе одноразовых email-адресов
and then use it like so:
class User
validates :email, presence: true, burner_email: true
end
WIP, I promise, Piotr!
- Copy the new domains into a file
./new-domains.txt
- Run
ruby add.rb