PHPackages                             raul3k/disposable-email-blocker-laravel - 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. [Mail &amp; Notifications](/categories/mail)
4. /
5. raul3k/disposable-email-blocker-laravel

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

raul3k/disposable-email-blocker-laravel
=======================================

Laravel integration for disposable email detection

v1.0.0(2mo ago)10[1 PRs](https://github.com/raul3k/disposable-email-blocker-laravel/pulls)MITPHPPHP ^8.2CI passing

Since Feb 27Pushed 2mo agoCompare

[ Source](https://github.com/raul3k/disposable-email-blocker-laravel)[ Packagist](https://packagist.org/packages/raul3k/disposable-email-blocker-laravel)[ Docs](https://github.com/raul3k/disposable-email-blocker-laravel)[ RSS](/packages/raul3k-disposable-email-blocker-laravel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (10)Versions (5)Used By (0)

Disposable Email Blocker for Laravel
====================================

[](#disposable-email-blocker-for-laravel)

Laravel integration for disposable/temporary email detection. Built on top of [`raul3k/disposable-email-blocker-core`](https://github.com/raul3k/disposable-email-blocker-core).

Features
--------

[](#features)

- **Validation Rule** - Easily validate emails in forms
- **Facade** - Simple API for checking emails anywhere
- **Database Checker** - Store and manage disposable domains in your database
- **Artisan Commands** - Update domains from multiple sources
- **Laravel Cache Integration** - Redis, File, Database, or any Laravel cache driver
- **Auto-discovery** - Works out of the box with Laravel 11 and 12

Installation
------------

[](#installation)

```
composer require raul3k/disposable-email-blocker-laravel
```

The package uses Laravel's auto-discovery, so no manual service provider registration is needed.

### Publish Configuration (Optional)

[](#publish-configuration-optional)

```
php artisan vendor:publish --tag=disposable-blocker-config
```

### Publish Migrations (For Database Checker)

[](#publish-migrations-for-database-checker)

```
php artisan vendor:publish --tag=disposable-blocker-migrations
php artisan migrate
```

Usage
-----

[](#usage)

### Validation Rule

[](#validation-rule)

```
use Raul3k\DisposableBlocker\Laravel\Rules\NotDisposableEmail;

// In a Form Request
public function rules(): array
{
    return [
        'email' => ['required', 'email', new NotDisposableEmail()],
    ];
}

// With custom message
'email' => [new NotDisposableEmail('Temporary emails are not allowed')],

// In a Controller
$request->validate([
    'email' => ['required', 'email', new NotDisposableEmail()],
]);
```

### Facade

[](#facade)

```
use Raul3k\DisposableBlocker\Laravel\Facades\DisposableEmail;

// Simple check
if (DisposableEmail::isDisposable($email)) {
    return back()->withErrors(['email' => 'Disposable emails not allowed']);
}

// Get detailed result
$result = DisposableEmail::check($email);
$result->isDisposable();    // bool
$result->isSafe();          // bool
$result->getDomain();       // string
$result->getConfidence();   // float

// Check domain directly
DisposableEmail::isDomainDisposable('mailinator.com'); // true

// Batch checking
$results = DisposableEmail::checkBatch([
    'user1@gmail.com',
    'user2@mailinator.com',
]);

// Domain information
$info = DisposableEmail::info('user@mail.example.co.uk');
$info->domain();       // 'example.co.uk'
$info->subdomain();    // 'mail'
$info->publicSuffix(); // 'co.uk'
$info->isPrivate();    // false
```

### Artisan Commands

[](#artisan-commands)

```
# List available sources
php artisan disposable:list-sources

# Update domains from all sources
php artisan disposable:update

# Update from a specific source
php artisan disposable:update --source=mailchecker

# Import from a specific source
php artisan disposable:import mailchecker

# Import with options
php artisan disposable:import mailchecker --clear --chunk=500
```

Configuration
-------------

[](#configuration)

```
// config/disposable-blocker.php

return [
    // Checker type: 'file', 'database', 'pattern', 'chain'
    'checker' => env('DISPOSABLE_CHECKER', 'file'),

    // Use bundled list from core package
    'use_bundled_list' => true,

    // Enable pattern-based detection
    'pattern_detection' => false,

    // Domains to whitelist (never block)
    'whitelist' => [
        // 'mycompany.com',
    ],

    // Cache settings
    'cache' => [
        'enabled' => true,
        'store' => env('DISPOSABLE_CACHE_STORE', 'default'),
        'ttl' => 3600,
        'prefix' => 'disposable_email:',
    ],

    // Database settings (when checker = 'database')
    'database' => [
        'table' => 'disposable_domains',
        'connection' => null,
    ],
];
```

Checker Types
-------------

[](#checker-types)

### File Checker (Default)

[](#file-checker-default)

Uses the bundled list from the core package. Fast and requires no setup.

```
'checker' => 'file',
'use_bundled_list' => true,
```

### Database Checker

[](#database-checker)

Store domains in your database for custom management.

```
php artisan vendor:publish --tag=disposable-blocker-migrations
php artisan migrate
php artisan disposable:update
```

```
'checker' => 'database',
```

### Chain Checker

[](#chain-checker)

Combine multiple checkers (database + bundled list).

```
'checker' => 'chain',
'use_bundled_list' => true,
```

### Pattern Detection

[](#pattern-detection)

Enable heuristic detection based on common patterns in disposable domain names.

```
'pattern_detection' => true,
```

Available Sources
-----------------

[](#available-sources)

The package can fetch domains from multiple sources:

SourceDescription`disposable-email-domains`Large comprehensive list (~170k domains)`burner-email-providers`Curated list (~4k domains)`mailchecker`FGRibreau's mailchecker list`ivolo-disposable`Ivolo's disposable domains`fakefilter`7c/fakefilter listTesting
-------

[](#testing)

```
composer test
```

Static Analysis
---------------

[](#static-analysis)

```
composer analyse
```

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance86

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

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

74d ago

### Community

Maintainers

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

---

Top Contributors

[![raul3k](https://avatars.githubusercontent.com/u/6098358?v=4)](https://github.com/raul3k "raul3k (3 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

composer-packagedisposable-emailemail-validationlaravellaravel-packagephpspam-preventionlaravelvalidationemailspamtemporarythrowawaydisposabletempmailburner

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/raul3k-disposable-email-blocker-laravel/health.svg)

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

###  Alternatives

[propaganistas/laravel-disposable-email

Disposable email validator

5762.6M6](/packages/propaganistas-laravel-disposable-email)[erag/laravel-disposable-email

A Laravel package to detect and block disposable email addresses.

226102.4k](/packages/erag-laravel-disposable-email)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[wendelladriel/laravel-validated-dto

Data Transfer Objects with validation for Laravel applications

759569.4k13](/packages/wendelladriel-laravel-validated-dto)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)[martian/spammailchecker

A laravel package that protect users from entering non-existing/spam email addresses.

422.0k](/packages/martian-spammailchecker)

PHPackages © 2026

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