Need help with EmailValidator?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

10.3K Stars 145 Forks MIT License 327 Commits 16 Opened issues


PHP Email address validator

Services available


Need anything else?

Contributors list


Build Status Code Quality Test Coverage SymfonyInsight

A library for validating emails against several RFC.

Supported RFCs

This library aims to support RFCs:

Supported versions

Curent major version with full support is v3

| Version | Released | EOL | Only critical bug fixes | Full | | ---- | :----: | :----: | :----: | :----: | | v3.x | 2020/12/29 | - | X | X | | v2.1.x | 2016/05/16 | 01/2022 | X | | | v1.2 | 2013/19/05 | YES | | |



PHP version upgrades will happen to accomodate to the pace of major frameworks. Minor versions bumps will go via minor versions of this library (i.e: PHP7.3 -> v3.x+1). Major versions will go with major versions of the library


Run the command below to install via Composer

composer require egulias/email-validator

Getting Started

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 <?php

use Egulias\EmailValidator\EmailValidator; use Egulias\EmailValidator\Validation\RFCValidation;

$validator = new EmailValidator(); $validator->isValid("[email protected]", new RFCValidation()); //true ```

Available validations

  1. RFCValidation: Standard RFC-like email validation.
  2. NoRFCWarningsValidation: RFC-like validation that will fail when warnings* are found.
  3. DNSCheckValidation: Will check if there are DNS records that signal that the server accepts emails. This does not entails that the email exists.
  4. MultipleValidationWithAnd: It is a validation that operates over other validations performing a logical and (&&) over the result of each validation.
  5. MessageIDValidation: Follows RFC2822 for message-id to validate that field, that has some differences in the domain part.
  6. 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.

$validator = new EmailValidator();
$multipleValidations = new MultipleValidationWithAnd([
    new RFCValidation(),
    new DNSCheckValidation()
// has MX records signaling a server with email capabilites
$validator->isValid("[email protected]", $multipleValidations); //true

Additional validations

Validations not present in the RFCs

  1. SpoofCheckValidation: Will check for multi-utf-8 chars that can signal an erroneous email name.

How to extend

It's easy! You just need to implement EmailValidation and you can use your own validation.


Please follow the Contribution guide. Is short and simple and will help a lot.

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 (v2 and earlier)
  • Josepf Bielawski @stloyd: For its first re-work of Dominic's lib
  • Dominic Sayers @dominicsayers: The original isemail function


Released under the MIT License attached with this code.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.