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 5322rfc_no_warning
- Same as the previous rule but will fail on warningspf: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 domaindns
- 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());
}
See the CONTRIBUTING guidelines for this project.
The dossierdata/laravel-email-validator is open-sourced software licensed under the MIT license.