EmailValidator README

The project's README from github.com/egulias/EmailValidator. As one markdown file: README.md.

EmailValidator

Build Status Quality Badge Test Coverage Latest Release

A library for validating emails against several RFC.

Supported RFCs

This library aims to support RFCs:

Supported versions

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

Requirements

Note: 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

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("[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 entail 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 accepted.

<?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 capabilities
$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.

Contributing

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:

License

Released under the MIT License attached with this code.

EmailValidator (egulias/EmailValidator)

Searching Database…

What is this?A PHP library that validates email addresses against several RFCs — 5321, 5322, 6530, 6531, 6532 and 1035.
Is this a standalone app or a piece of code I pull into my project?It's a library, not an app: you require it in your PHP project and call its validation classes from your own code.
How do I add it to my PHP project?Install it with Composer (the README gives the require command), then pick which validation strategy — or combination of them — to follow for each check.
What does my environment need for all of its checks to work?PHP 8.1 or newer plus Composer. Spoof checking and DNSCheckValidation additionally require the PHP Internationalization Libraries (PHP Intl) extension.
If the DNS check passes, can I trust the mailbox really exists?No — DNSCheckValidation only looks for DNS records signaling that the server accepts mail; a passing check does not entail the address exists.
Which validation strategies does it ship with?Built-in options: RFCValidation (standard RFC-like checks), NoRFCWarningsValidation (fails when warnings are found), DNSCheckValidation, MessageIDValidation (RFC2822 message-id fields), SpoofCheckValidation (flags suspicious multi-UTF-8 characters) and MultipleValidationWithAnd, which combines others with a logical AND.
Can I combine validations or write my own?Yes. MultipleValidationWithAnd wraps other validations and passes only if all of them pass, and you can extend the library by implementing the EmailValidation interface with your own rules.
Does it handle internationalized addresses with non-ASCII characters?Yes — the library explicitly targets RFCs 6530, 6531 and 6532, which cover internationalized addresses, and SpoofCheckValidation can flag multi-UTF-8 names that signal an erroneous email name.
Which version should I use, and is the project still maintained?Use v4.x, released in January 2023 — it is the line in full support. v3.x, v2.1.x and v1.2 are past end-of-life, and PHP version requirements will advance in step with library versions.
Creator
egulias
Size
0.7 MB
Stars
11.6K
Age
13y
Commits · 90 Days