ezeanyimhenry / email-validator
A PHP package for validating email addresses with detailed checks including MX records, disposable, and banned email lists, email existence and responsiveness.
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.0
README
A PHP package for validating email addresses with various checks such as MX records, disposable email detection, and banned email lists, email existence & responsiveness.
Features
- Validate email format
- Check MX records for domain validity
- Detect disposable email addresses
- Check against banned email lists
- Check for free email provider addresses
- Check if mailbox exists
- Check is mailbox is responsive
- Check is domain uses catch-all
Installation
You can install the package via Composer. Run the following command:
composer require ezeanyimhenry/email-validator
Usage
Here’s how to use the EmailValidator
class:
Basic Validation
You can validate a single email address as follows:
<?php require 'vendor/autoload.php'; // Autoload files using Composer use EzeanyimHenry\EmailValidator\EmailValidator; // Create a new instance of the EmailValidator $emailValidator = new EmailValidator(); // Validate a single email address $result = $emailValidator->validate('test@example.com'); if ($result['isValid']) { echo "The email is valid."; } else { echo "Error: " . $result['message']; }
Validating Multiple Email Addresses
To validate multiple email addresses at once, simply pass an array:
<?php require 'vendor/autoload.php'; // Autoload files using Composer use EzeanyimHenry\EmailValidator\EmailValidator; // Create a new instance of the EmailValidator $emailValidator = new EmailValidator(); // Validate multiple email addresses $emails = [ 'test@example.com', 'invalid-email', 'user@mailinator.com', ]; $results = $emailValidator->validate($emails); foreach ($results as $email => $result) { echo "$email: " . ($result['isValid'] ? "Valid" : "Invalid - " . $result['message']) . "\n"; }
Configuration Options
You can customize the validator's behavior by passing configuration options when creating the instance:
<?php require 'vendor/autoload.php'; // Autoload files using Composer use EzeanyimHenry\EmailValidator\EmailValidator; // Create a new instance with custom configuration $emailValidator = new EmailValidator([ 'checkMxRecords' => true, 'checkBannedListedEmail' => true, 'checkDisposableEmail' => true, 'checkFreeEmail' => false, 'checkEmailExistence' => true, 'checkMailServerResponsive' => true, 'checkGreylisting' => true, 'checkCatchAll' => false, ]); // Validate an email $result = $emailValidator->validate('test@example.com');
Error Handling
The validate()
method returns an associative array containing the validation result and a message. You can check if the email is valid by accessing the isValid
key, and you can get the error message from the message
key.
if (!$result['isValid']) { echo "Validation failed: " . $result['message']; }
Testing
To run the tests, ensure you have PHPUnit installed. You can run the tests with the following command:
Contributing
Contributions are welcome! Please follow these steps to contribute:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a pull request
License
This package is licensed under the MIT License. See the LICENSE file for more details.