A more extensive email validator than the default provided by Laravel.
The Laravel Email Validator extends the Laravel Validator with the validate_email rule.
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,
],
- Laravel 5.0 and up
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' => '[email protected]'
], [
    'email' => 'validate_email',
]);
if ($validator->fails()) {
    dump($validator->errors());
}
// Rule with parameters
$validator = \Validator::make([
    'email' => '[email protected]'
], [
    '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('[email protected]', $rules)) {
    dump($emailValidator->errors());
}See the CONTRIBUTING guidelines for this project.
The dossierdata/laravel-email-validator is open-sourced software licensed under the MIT license.