Skip to content

Stop disposable email addresses before they enter your Laravel app.

EragLaravelDisposableEmail helps you detect and block temporary email addresses during form validation, runtime checks, and Blade conditionals. It comes with 110,646+ known disposable domains, simple installation, remote sync support, custom blacklist support, and optional caching for faster lookups.

README powered content

A clean way to keep throwaway inboxes out of your signup flow.

Whether you are protecting registrations, trial signups, invite systems, or internal tools, this package gives you a simple Laravel-friendly API for rejecting disposable email domains before they become a data quality problem.

110,646+disposable domains included
Laravel 10-13supported versions
Rule + Facade + Blademultiple integration points
composer require erag/laravel-disposable-emailphp artisan erag:install-disposable-email$request->validate([    'email' => ['required', 'email', 'disposable_email'],]);if (DisposableEmail::isDisposable($email)) {    // stop temp inboxes early}
RULEBuilt for validation

Add disposable_email to your validation rules and block temporary inboxes at the form level.

RUNTIMERuntime checks

Check email addresses anywhere in your app using the rule class or facade.

SYNCRemote syncing

Keep your domain list fresh by syncing from a remote source whenever you need to.

CACHEOptional caching

Speed up repeated lookups in busy applications with built-in cache support.

Everything you need to use the package with confidence.

The docs cover the full package workflow, from installation and validation rules to runtime checks, Blade directives, syncing, custom blacklists, and caching.

What you get
  • A large built-in disposable domain list ready to use out of the box.
  • Support for both string rules and custom rule objects.
  • Facade and runtime checks for service classes and business logic.
  • @disposableEmail(...) for simple conditional output in Blade views.
  • Remote syncing, custom blacklist files, and optional caching.
Where it fits best
  1. Registration forms and account creation flows.
  2. Free trial protection and abuse prevention.
  3. B2B onboarding where real business email addresses matter.
  4. Admin tools and moderation workflows.
  5. Invite, referral, and lead-quality sensitive features.

Use it the way real Laravel apps are built.

Start with validation at the request layer, then add runtime checks anywhere your business logic needs a simple yes or no answer.

Form Request
public function rules(): array{    return [        'email' => ['required', 'email', 'disposable_email'],    ];}
Facade
use DisposableEmail;if (DisposableEmail::isDisposable($email)) {    throw ValidationException::withMessages([        'email' => 'Use a permanent inbox.'    ]);}
Blade
@disposableEmail($email)  <p class="text-red-600">Disposable email detected</p>@else  <p class="text-green-600">Email looks good</p>@enddisposableEmail

Install it, configure it, and keep your email checks up to date.

Start with Getting Started, then move through validation, configuration, syncing, and caching to set up a complete disposable email blocking workflow.

MIT License. Copyright Er Amit Gupta