https://github.com/sergeypedan/burner_email_db
DB of burner email domains, packaged as a Ruby gem
https://github.com/sergeypedan/burner_email_db
burner-email db gem ruby
Last synced: 3 months ago
JSON representation
DB of burner email domains, packaged as a Ruby gem
- Host: GitHub
- URL: https://github.com/sergeypedan/burner_email_db
- Owner: sergeypedan
- Created: 2021-02-07T08:10:11.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-05T18:42:59.000Z (about 3 years ago)
- Last Synced: 2026-03-11T05:11:39.443Z (4 months ago)
- Topics: burner-email, db, gem, ruby
- Language: Ruby
- Homepage: https://sergeypedan.ru/open_source_projects/burner-email-db
- Size: 1.75 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
Awesome Lists containing this project
README
# Burner email DB
[](https://badge.fury.io/rb/burner_email_db)
[](https://travis-ci.org/sergeypedan/burner_email_db)
A very long list (119 261) of burner email domains, packaged for Ruby gems.
## Sourse
Copied with much respect from
- Wes Bos’s [repo](https://github.com/wesbos/burner-email-providers)
- https://disposable.github.io/disposable-email-domains/domains.txt
- https://github.com/disposable/disposable/blob/master/blacklist.txt
## Installation
Add this line to your application's `Gemfile`:
```ruby
gem "burner_email_db"
```
## Usage
### Just list everything
```ruby
BurnerEmailDB.domains #=> ["0-00.usa.cc", "0-180.com", ...]
```
### ActiveModel validation
```ruby
class User
validates :email, exclusion: { in: BurnerEmailDB.domains }
end
```
### ActiveModel validator
You could write a validator:
```ruby
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:
```yaml
---
ru:
errors:
messages:
disposable_email: в сервисе одноразовых email-адресов
```
and then use it like so:
```ruby
class User
validates :email, presence: true, burner_email: true
end
```
### Dry validation
WIP, I promise, Piotr!
## Alternatives
- https://github.com/disposable/disposable
- https://open.kickbox.io
## How to add new
1. Copy the new domains into a file `./new-domains.txt`
1. Run `ruby add.rb`