Laravel validation rule to prevent trashmail email addresses.

1.1 2023-02-15 21:03 UTC

This package is auto-updated.

Last update: 2024-05-15 23:53:49 UTC


Latest Version MIT License Offset Earth

GitHub Workflow Status Total Downloads

This package provides a validation rule to prevent trashmail email addresses.


At first you have to add this package to your composer.json:

composer require elbgoods/laravel-trashmail-rule

After this you can publish the package translation files to adjust the error messages:

php artisan vendor:publish --provider="Elbgoods\TrashmailRule\TrashmailRuleServiceProvider" --tag=lang
php artisan vendor:publish --provider="Elbgoods\TrashmailRule\TrashmailRuleServiceProvider" --tag=config


The package provides a configuration to define the rule behaviour.

Denied domains

You can add your own list of denied domains, these domains will always be blocked.

Allowed domains

You can add your own list of allowed domains, these domains will always pass.

supported Providers


Validation Rule

This package provides a basic TrashmailRule which you can use. All more specific rules only extend this rule with a predefined format.

use Elbgoods\TrashmailRule\Rules\TrashmailRule;

$rule = new TrashmailRule();

By default the rule requires a value - if you want to accept null values you can use the nullable() method or set the $required parameter to false.

use Elbgoods\TrashmailRule\Rules\TrashmailRule;

$rule = new TrashmailRule(false);


You can also use the facade if you want to check any email address outside validation. This will run the same logic as the validation rule and runs all providers set in the config.

use Elbgoods\TrashmailRule\Facades\Trashmail;


single Provider

You can also check using a single provider only. Keep in mind that all providers only accept the domain to check and not a full email address. The facade provides a method that returns the domain used in an email address.

use Elbgoods\TrashmailRule\Facades\Trashmail;


custom Provider

If you want to add your own provider you can do so.

use Elbgoods\TrashmailRule\Facades\Trashmail;
use Illuminate\Contracts\Container\Container;
use Elbgoods\TrashmailRule\Contracts\ProviderContract;

Trashmail::extend('custom_provider', static function (Container $app): ProviderContract {
    return new CustomProvider();


Please see CHANGELOG for more information on what has changed recently.


This package follows semantic versioning.


Please see CONTRIBUTING for details.


Please see SECURITY for details.



The MIT License (MIT). Please see License File for more information.


You're free to use this package, but if it makes it to your production environment we would highly appreciate you buying or planting the world a tree.

It’s now common knowledge that one of the best tools to tackle the climate crisis and keep our temperatures from rising above 1.5C is to plant trees. If you contribute to my forest you’ll be creating employment for local families and restoring wildlife habitats.

You can buy trees at offset.earth/treeware

Read more about Treeware at https://treeware.earth