Awesome
EmailValidator
Supported RFCs
This library aims to support:
RFC 5321, 5322, 6530, 6531, 6532.
Requirements
- Composer is required for installation
- Spoofchecking and DNSCheckValidation validation requires that your PHP system has the PHP Internationalization Libraries (also known as PHP Intl)
Installation
Run the command below to install via Composer
composer require egulias/email-validator
Getting Started
EmailValidator
requires you to decide which (or combination of them) validation/s strategy/ies you'd like to follow for each validation.
A basic example with the RFC validation
<?php
use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Validation\RFCValidation;
$validator = new EmailValidator();
$validator->isValid("example@example.com", new RFCValidation()); //true
Available validations
- RFCValidation: Standard RFC-like email validation.
- NoRFCWarningsValidation: RFC-like validation that will fail when warnings* are found.
- DNSCheckValidation: Will check if there are DNS records that signal that the server accepts emails. This does not entails that the email exists.
- SpoofCheckValidation: Will check for multi-utf-8 chars that can signal an erroneous email name.
- MultipleValidationWithAnd: It is a validation that operates over other validations performing a logical and (&&) over the result of each validation.
- Your own validation: You can extend the library behaviour by implementing your own validations.
*warnings: Warnings are deviations from the RFC that in a broader interpretation are acceptded.
<?php
use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Validation\DNSCheckValidation;
use Egulias\EmailValidator\Validation\MultipleValidationWithAnd;
use Egulias\EmailValidator\Validation\RFCValidation;
$validator = new EmailValidator();
$multipleValidations = new MultipleValidationWithAnd([
new RFCValidation(),
new DNSCheckValidation()
]);
//ietf.org has MX records signaling a server with email capabilites
$validator->isValid("example@ietf.org", $multipleValidations); //true
How to extend
It's easy! You just need to implement EmailValidation and you can use your own validation.
Other Contributors
(You can find current contributors here)
As this is a port from another library and work, here are other people related to the previous one:
- Ricard Clau @ricardclau: Performance against PHP built-in filter_var
- Josepf Bielawski @stloyd: For its first re-work of Dominic's lib
- Dominic Sayers @dominicsayers: The original isemail function
License
Released under the MIT License attached with this code.