PHP >= 5.4
PHP library to check email inspired in webmozart/assert
composer require albertcolom/assert-email
use albertcolom\Assert\AssertEmail;
class User
{
//...
public function setEmail(string $email)
{
AssertEmail::valid($email);
}
}
$user = new User;
$user->setEmail('[email protected]'); // true
$user->setEmail('foo@domain'); // InvalidArgumentException: Invalid email "foo@domain"
Check email valid RFC 2822
valid($email, $message = '')
AssertEmail::valid('[email protected]'); // true
AssertEmail::valid('foo@domain'); // InvalidArgumentException: Invalid email "foo@domain"
AssertEmail::valid('foo@domain', 'Custom message %s'); // InvalidArgumentException: Custom message "foo@domain"
Check temporary emails, it provides a built-in database of 2000+ domains
temporalMail($email, $message = '')`
AssertEmail::temporalMail('[email protected]'); // true
AssertEmail::temporalMail('[email protected]'); // InvalidArgumentException: Temporal email is not allowed "[email protected]"
AssertEmail::temporalMail('[email protected]', 'Custom message %s'); // InvalidArgumentException: Custom message "[email protected]"
Check DNS MX registry
dns($email, $message = '')
AssertEmail::dns('[email protected]'); // true
AssertEmail::dns('[email protected]'); // InvalidArgumentException: Incorrect domain name "domain.000"
AssertEmail::dns('[email protected]', 'Custom message %s'); // InvalidArgumentException: Custom message "domain.000"
Check if domain allowed list
domainsAllowed($email, array $domains, $message = '')
$allowed = ['mysite.com', 'somedomain.xy', 'test.dev'];
AssertEmail::domainsAllowed('[email protected]', $allowed); // true
AssertEmail::domainsAllowed('[email protected]', $allowed); // InvalidArgumentException: Domain is not allowed "[email protected]"
AssertEmail::domainsAllowed('[email protected]', $allowed, 'Custom message %s'); // InvalidArgumentException: Custom message "[email protected]"