dossierdata/laravel-email-validator

A more extensive email validator rule than the default provided by Laravel.

v3.0.0 2022-10-18 08:25 UTC

This package is auto-updated.

Last update: 2024-04-18 11:47:03 UTC


README

A more extensive email validator than the default provided by Laravel.

Laravel Email Validator

Latest Stable Version Build Status Total Downloads StyleCI Software License

The Laravel Email Validator extends the Laravel Validator with the validate_email rule.

How do I install it?

The easiest way is via Composer.

To install the latest version of Laravel Email Validator, run the command below:

composer require dossierdata/laravel-email-validator

Then register the service provider in config/app.php:

'providers' => [
    ...
    Dossierdata\LaravelEmailValidator\ServiceProvider::class,
    Dossierdata\LaravelEmailValidator\BootServiceProvider::class,
],

Requirements

  • Laravel 5.0 and up

How do I use it?

There are currently four different rules that you can choose from:

  • rfc - Validates that the supplied value complies with RFC 5321 and RFC 5322
  • rfc_no_warning - Same as the previous rule but will fail on warning
  • spf:127.0.0.1 - Validate that the domain of the email has a correct SPF record and that the supplied IP-address/range is authorized for this domain
  • dns - Validates that the domain of the email actually exists by checking for an MX or DSN record

Use is as a rule for Validator:

<?php

// Rule without parameters will default to only checking RFC
$validator = \Validator::make([
    'email' => '.incorrect@email.nodomain'
], [
    'email' => 'validate_email',
]);

if ($validator->fails()) {
    dump($validator->errors());
}

// Rule with parameters
$validator = \Validator::make([
    'email' => '.incorrect@email.nodomain'
], [
    'email' => 'validate_email:rfc,spf:127.0.0.1,dns',
]);

if ($validator->fails()) {
    dump($validator->errors());
}

Use via dependency injection:

<?php

$rules = [
    'rfc',
    'spf:127.0.0.1',
    'dns'
];

$emailValidator = app(\Dossierdata\LaravelEmailValidator\Contracts\EmailValidator::class);

if (!$emailValidator->validateValue('.incorrect@email.nodomain', $rules)) {
    dump($emailValidator->errors());
}

Contributing

See the CONTRIBUTING guidelines for this project.

License

The dossierdata/laravel-email-validator is open-sourced software licensed under the MIT license.