Skip to content

PHP e-mail address validator using list of all known TLDs

License

Notifications You must be signed in to change notification settings

fedek6/tld-mail-validator

Repository files navigation

TLD e-mail validator

Build Status

PHP e-mail address validator using list of all known TLDs and simple domain MX record check. With ability to automatically update top-level domains list.

Usage example

use Fedek6\TldMailValidator\TldMailValidator;

/** @var string $tldsFilePath  */
$tldsFilePath = __DIR__ . '/../data/tlds-alpha-by-domain.txt';

/** @var array $addresses */
$addresses = require __DIR__ . '/addresses.php';

/** @var \Fedek6\TldMailValidator\TldMailValidator $validator */
$validator = new TldMailValidator($tldsFilePath);

if ($validator->validate('[email protected]')) {
    echo 'This is email is OK. and has proper actual tld.';
} else {
    echo 'Something\'s wrong with this address';
}

If you want to test also MX record of a domain (slower), pass second argument to the constructor:

/** @var \Fedek6\TldMailValidator\TldMailValidator $validator */
$validator = new TldMailValidator($tldsFilePath, TldMailValidator::TEST_ALL);

Testing

composer test

Or:

./vendor/bin/phpunit --testdox --verbose --colors tests

Test one file

vendor/bin/phpunit --testdox --verbose --colors tests/RemoteFileUpdaterTest.php

Dry run before deploy

php -f examples/mx.php
php -f examples/simple.php