PHPackages                             pross/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. [Utility &amp; Helpers](/categories/utility)
4. /
5. pross/disposable-email-domains

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

pross/disposable-email-domains
==============================

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

1.3(9y ago)12.2k1

Since Aug 16Pushed 9y ago1 watchersCompare

[ Source](https://github.com/Pross/disposable-email-domains)[ Packagist](https://packagist.org/packages/pross/disposable-email-domains)[ RSS](/packages/pross-disposable-email-domains/feed)WikiDiscussions master Synced today

READMEChangelog (4)DependenciesVersions (5)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

33

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 67% 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

Every ~40 days

Total

4

Last Release

3485d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/265860?v=4)[Simon Prosser](/maintainers/pross)[@Pross](https://github.com/Pross)

---

Top Contributors

[![martenson](https://avatars.githubusercontent.com/u/1814954?v=4)](https://github.com/martenson "martenson (122 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)")[![lc-guy](https://avatars.githubusercontent.com/u/5222114?v=4)](https://github.com/lc-guy "lc-guy (2 commits)")[![irvin](https://avatars.githubusercontent.com/u/165936?v=4)](https://github.com/irvin "irvin (2 commits)")[![kyledrake](https://avatars.githubusercontent.com/u/28153?v=4)](https://github.com/kyledrake "kyledrake (2 commits)")[![Pross](https://avatars.githubusercontent.com/u/265860?v=4)](https://github.com/Pross "Pross (2 commits)")[![frin](https://avatars.githubusercontent.com/u/176282?v=4)](https://github.com/frin "frin (1 commits)")[![sillylogger](https://avatars.githubusercontent.com/u/168183?v=4)](https://github.com/sillylogger "sillylogger (1 commits)")[![jochembroekhoff](https://avatars.githubusercontent.com/u/8207181?v=4)](https://github.com/jochembroekhoff "jochembroekhoff (1 commits)")[![chebelom](https://avatars.githubusercontent.com/u/11653136?v=4)](https://github.com/chebelom "chebelom (1 commits)")[![Vad1mo](https://avatars.githubusercontent.com/u/1492007?v=4)](https://github.com/Vad1mo "Vad1mo (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)")[![arthur-s](https://avatars.githubusercontent.com/u/5279203?v=4)](https://github.com/arthur-s "arthur-s (1 commits)")[![mipapo](https://avatars.githubusercontent.com/u/2135076?v=4)](https://github.com/mipapo "mipapo (1 commits)")[![andrey-ivanov](https://avatars.githubusercontent.com/u/6269521?v=4)](https://github.com/andrey-ivanov "andrey-ivanov (1 commits)")

### Embed Badge

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

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

PHPackages © 2026

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