PHPackages                             chefsplate/disposable-email-domains - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. chefsplate/disposable-email-domains

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

chefsplate/disposable-email-domains
===================================

List of email address domains that are known to be from spam / disposable hosts

1.0.0(9y ago)015

Since Jan 20Pushed 9y ago2 watchersCompare

[ Source](https://github.com/chefsplate/disposable-email-domains)[ Packagist](https://packagist.org/packages/chefsplate/disposable-email-domains)[ RSS](/packages/chefsplate-disposable-email-domains/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)DependenciesVersions (3)Used By (0)

List of disposable email domains
================================

[](#list-of-disposable-email-domains)

[![Licensed under CC0](https://camo.githubusercontent.com/dc5dafd103feb167be372f069c52972bd8cd86cf2fdfc28a1b8aa44e35463b27/68747470733a2f2f6c6963656e7365627574746f6e732e6e65742f702f7a65726f2f312e302f38387833312e706e67)](https://creativecommons.org/publicdomain/zero/1.0/)

This repo contains a [list of disposable and temporary email address domains](disposable_email_blacklist.conf) often used to register dummy users in order to spam/abuse some services.

Originally collected to filter new user registration at  and later merged with other lists found online. I cannot guarantee all of these can still be considered disposable but they probably were at one point in time.

Whitelist
=========

[](#whitelist)

The file [whitelist.conf](whitelist.conf) gathers email domains that are often identified as disposable but in fact are not.

Example Usage
=============

[](#example-usage)

**Python**

```
blacklist = ('disposable_email_blacklist.conf')
blacklist_content = [line.rstrip() for line in blacklist.readlines()]
if email.split('@')[1] in blacklist_content:
    message = "Please enter your permanent email address."
    return (False, message)
else:
    return True
```

Available as [PyPI module](https://pypi.python.org/pypi/disposable-email-domains) thanks to @di

```
>>> from disposable_email_domains import blacklist
>>> 'bearsarefuzzy.com' in blacklist
True

```

**PHP** contributed by @txt3rob and @deguif

```
function is_temp_mail($mail) {
    $mail_domains_ko = file('disposable_email_blacklist.conf', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    //Need to ensure the mail contains an @ to avoid undefined offset
    return in_array(explode('@', $mail)[1], $mail_domains_ko);
}
```

**Ruby on Rails** contributed by @MitsunChieh

In resource model, usually it is `user.rb`

```
before_validation :reject_email_blacklist

def reject_email_blacklist
  blacklist = File.read('config/disposable_email_blacklist.conf').split("\n")

  if blacklist.include?(email.split('@')[1])
    errors[:email]  new_file.conf`

`$ comm -23 new_file.conf whitelist.conf > disposable_email_blacklist.conf`

to add contents of another file in the same format (only second level domains on new line without @). It also converts uppercase to lowercase, sorts, removes duplicates and removes whitelisted domains.

Changelog
=========

[](#changelog)

- 12/6/16 - Available as [PyPI module](https://pypi.python.org/pypi/disposable-email-domains) thanks to @di
- 7/27/16 - Converted all domains to the second level. This means that starting from [this commit](https://github.com/martenson/disposable-email-domains/commit/61ae67aacdab0b19098de2e13069d7c35b74017a) the implementers should take care of matching the second level domain names properly i.e. `@xxx.yyy.zzz` should match `yyy.zzz` in blacklist more info in [\#46](https://github.com/martenson/disposable-email-domains/issues/46)

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 67.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3401d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ed4bebfd83746cca2842cdd0bf9bda371e2f7909c5bb67e2f0295a7656346050?d=identicon)[wsaleme](/maintainers/wsaleme)

![](https://www.gravatar.com/avatar/b1be8f3b039aaefeace8d9764c520d37107609790175f7b46096094a448440e8?d=identicon)[bmanza87](/maintainers/bmanza87)

---

Top Contributors

[![martenson](https://avatars.githubusercontent.com/u/1814954?v=4)](https://github.com/martenson "martenson (125 commits)")[![joshtronic](https://avatars.githubusercontent.com/u/112741?v=4)](https://github.com/joshtronic "joshtronic (15 commits)")[![deguif](https://avatars.githubusercontent.com/u/993399?v=4)](https://github.com/deguif "deguif (11 commits)")[![MitsunChieh](https://avatars.githubusercontent.com/u/8961773?v=4)](https://github.com/MitsunChieh "MitsunChieh (4 commits)")[![zeroZshadow](https://avatars.githubusercontent.com/u/3106728?v=4)](https://github.com/zeroZshadow "zeroZshadow (3 commits)")[![kyledrake](https://avatars.githubusercontent.com/u/28153?v=4)](https://github.com/kyledrake "kyledrake (2 commits)")[![irvin](https://avatars.githubusercontent.com/u/165936?v=4)](https://github.com/irvin "irvin (2 commits)")[![lc-guy](https://avatars.githubusercontent.com/u/5222114?v=4)](https://github.com/lc-guy "lc-guy (2 commits)")[![frin](https://avatars.githubusercontent.com/u/176282?v=4)](https://github.com/frin "frin (1 commits)")[![jochembroekhoff](https://avatars.githubusercontent.com/u/8207181?v=4)](https://github.com/jochembroekhoff "jochembroekhoff (1 commits)")[![4O4](https://avatars.githubusercontent.com/u/4274691?v=4)](https://github.com/4O4 "4O4 (1 commits)")[![maciekmm](https://avatars.githubusercontent.com/u/3267517?v=4)](https://github.com/maciekmm "maciekmm (1 commits)")[![marcelstoer](https://avatars.githubusercontent.com/u/624195?v=4)](https://github.com/marcelstoer "marcelstoer (1 commits)")[![mipapo](https://avatars.githubusercontent.com/u/2135076?v=4)](https://github.com/mipapo "mipapo (1 commits)")[![mlavigne79](https://avatars.githubusercontent.com/u/17458626?v=4)](https://github.com/mlavigne79 "mlavigne79 (1 commits)")[![nlm](https://avatars.githubusercontent.com/u/3306347?v=4)](https://github.com/nlm "nlm (1 commits)")[![ryana](https://avatars.githubusercontent.com/u/16389?v=4)](https://github.com/ryana "ryana (1 commits)")[![sc0rp10](https://avatars.githubusercontent.com/u/597762?v=4)](https://github.com/sc0rp10 "sc0rp10 (1 commits)")[![Scalar4eg](https://avatars.githubusercontent.com/u/576244?v=4)](https://github.com/Scalar4eg "Scalar4eg (1 commits)")[![shaldev](https://avatars.githubusercontent.com/u/2159596?v=4)](https://github.com/shaldev "shaldev (1 commits)")

### Embed Badge

![Health badge](/badges/chefsplate-disposable-email-domains/health.svg)

```
[![Health](https://phpackages.com/badges/chefsplate-disposable-email-domains/health.svg)](https://phpackages.com/packages/chefsplate-disposable-email-domains)
```

###  Alternatives

[webmozart/assert

Assertions to validate method input/output with nice error messages.

7.6k894.0M1.2k](/packages/webmozart-assert)[bensampo/laravel-enum

Simple, extensible and powerful enumeration implementation for Laravel.

2.0k15.9M104](/packages/bensampo-laravel-enum)[nette/forms

📝 Nette Forms: generating, validating and processing secure forms in PHP. Handy API, fully customizable, server &amp; client side validation and mature design.

54013.2M450](/packages/nette-forms)[swaggest/json-schema

High definition PHP structures with JSON-schema based validation

48612.5M73](/packages/swaggest-json-schema)[stevebauman/purify

An HTML Purifier / Sanitizer for Laravel

5325.6M19](/packages/stevebauman-purify)[ashallendesign/laravel-config-validator

A package for validating your Laravel app's config.

217905.3k5](/packages/ashallendesign-laravel-config-validator)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
