/laravel-trashmail-rule

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

Primary LanguagePHPMIT LicenseMIT

Laravel Trashmail Rules

Latest Version MIT License Offset Earth

GitHub Workflow Status Total Downloads

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

Installation

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

Configuration

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

Usage

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);
$rule->nullable();

Facade

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;

Trashmail::isDisposable('example@elbgoods.de');

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;

Trashmail::provider('config')->isDisposable(
    Trashmail::getDomain('example@elbgoods.de')
);

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();
});

Changelog

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

Versioning

This package follows semantic versioning.

Contributing

Please see CONTRIBUTING for details.

Security

Please see SECURITY for details.

Credits

License

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

Treeware

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