This package provides a method for determining whether an email address is a disposable / temporary email address.
All credit to the maintaining of the list of disposable / temporary email addresses goes to github.com/disposable-email-domains/disposable-email-domains.
This project and it's maintainer(s) do not discourage the use of such disposable / temporary email addresses, but simply allows for the detection of such.
PHP 8.2 or above is required. If PHP 8.1 is required please use version 4. If PHP 7.4 to 8.0 is required please use version 3.
To install via Composer:
composer require elliotjreed/disposable-emails-filter
The checker / filter can either be used via a static or non-static means:
<?php
require 'vendor/autoload.php';
use ElliotJReed\DisposableEmail\Email;
if ((new Email())->isDisposable('email@temporarymailaddress.com')) {
echo 'This is a disposable / temporary email address';
}
or
<?php
require 'vendor/autoload.php';
use ElliotJReed\DisposableEmail\DisposableEmail;
if (DisposableEmail::isDisposable('email@temporarymailaddress.com')) {
echo 'This is a disposable / temporary email address';
}
The lister can either be used via a static or non-static means:
<?php
require 'vendor/autoload.php';
use ElliotJReed\DisposableEmail\Email;
foreach ((new Email())->getDomainList() as $domain) {
echo $domain . PHP_EOL;
}
or
<?php
require 'vendor/autoload.php';
use ElliotJReed\DisposableEmail\DisposableEmail;
foreach (DisposableEmail::getDomainList() as $domain) {
echo $domain . PHP_EOL;
}
If an invalid email address is provided then an InvalidEmailException
is thrown, so it is advisable to check that the email address is valid first. For example:
<?php
require 'vendor/autoload.php';
use ElliotJReed\DisposableEmail\Email;
$email = 'not-a-real-email-address#example.net';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
if ((new Email())->isDisposable($email)) {
echo 'This is a disposable / temporary email address';
}
} else {
echo 'This is not a valid email address';
}
Would output:
This is not a valid email address
You can also provide your own custom domain list in a new line separated plain-text file, for example:
example.com
example.net
Then passing the file location into the constructor:
<?php
require 'vendor/autoload.php';
use ElliotJReed\DisposableEmail\Email;
new Email('/path/to/custom/list.txt');
If an invalid list is provided then an InvalidDomainListException
is thrown.
PHP 7.4 or above and Composer is expected to be installed on our system.
For instructions on how to install Composer visit getcomposer.org.
composer require elliotjreed/disposable-emails-filter
After cloning this repository, change into the newly created directory and run
composer install
or if you have installed Composer locally
php composer.phar install
This will install all dependencies needed for the project.
All tests can be run by executing
composer run-script test
phpunit
will automatically find all tests inside the test
directory and run them based on the configuration in the phpunit.xml
file.
This project is licensed under the MIT License - see the LICENCE file for details.