enricodias / email-validator
使用多个提供者验证和检查一次性/临时/废弃电子邮件
Requires
- php: >=5.6
- guzzlehttp/guzzle: ^6.4
Requires (Dev)
- codacy/coverage: ^1.4
- phpunit/phpunit: >5.7 <9
README
验证和检查一次性/临时/废弃电子邮件。
安装
在项目的根目录中使用Composer安装此包。
composer require enricodias/email-validator
基本用法
$emailValidator = new \enricodias\EmailValidator\EmailValidator(); $emailValidator->validate('test+mail@gmail.co'); $emailValidator->isValid(); // false, gmail.co doesn't have valid MX entries $emailValidator->isDisposable(); // false, gmail.co isn't a known domain for disposable emails $emailValidator->isAlias(); // true, test+mail@gmail.co is alias for test@gmail.co $emailValidator->didYouMean(); // test+mail@gmail.com
服务提供者
服务提供者是一个第三方服务,用于验证电子邮件,通常使用API。您可以在验证时注册多个提供者。
注册的提供者将按顺序使用,直到其中一个返回有效的响应。如果您想要一个提供者作为故障转移,这将特别有用。
默认启用MailCheck.ai。
$MailboxLayer = new \enricodias\EmailValidator\ServiceProviders\MailboxLayer('API_KEY'); $Mailgun = new \enricodias\EmailValidator\ServiceProviders\Mailgun('API_KEY'); $emailValidator->addProvider($MailboxLayer, 'MailboxLayer'); $emailValidator->addProvider($Mailgun); // the name is optional $emailValidator->validate('test@email.com');
实现提供者
* Validator.pizza现在称为MailCheck.ai**该功能已记录,但截至目前,API从未返回建议。
自定义提供者
您可以通过实现类ServiceProviderInterface
添加自定义提供者。您可以使用removeProvider()
方法删除默认的MailCheck.ai提供者,或者使用clearProviders()
方法删除所有提供者
$emailValidator = new \enricodias\EmailValidator\EmailValidator(); $emailValidator->clearProviders(); // remove all providers $emailValidator->addProvider($CustomServiceProvider, 'My Custom Provider'); $emailValidator->validate('test@email.com');
您可以使用静态方法create()
创建实例并链接方法
$emailValidator = \enricodias\EmailValidator\EmailValidator::create() ->removeProvider('MailCheck.ai'); ->addProvider($CustomServiceProvider) ->validate('test@email.com');
请注意,未命名注册的提供者不能通过removeProvider()
删除。
随机服务提供者
当使用多个提供者的免费层时,随机服务提供者列表非常有用。如果不进行随机排序,提供者将始终以相同的顺序使用,从而导致第一个提供者耗尽信用时的不必要的失败。
$emailValidator->clearProviders() ->addProvider($Provider1) ->addProvider($Provider2) ->shuffleProviders() ->validate('test@email.com');
工作原理
该类检查电子邮件语法是否有效,如果是,则调用服务提供者。
速率限制
由于大多数服务提供者要么是付费的,要么每小时每个IP有请求限制,因此如果电子邮件未通过本地验证检查,则不会发出请求。
本地域名列表
为了降低API请求的数量,本地检查包括一个包含最常见的一次性域名的列表。该列表旨在尽可能短,以免影响性能和避免需要常数更新。允许使用通配符*
。
其他域名
很可能您用户中最受欢迎的一次性电子邮件服务不在默认列表中,因此您可能希望使用addDomains()
方法自定义列表
$emailValidator = \enricodias\EmailValidator\EmailValidator::create() ->addDomains(['*.domain.com']) ->validate('test@sub.domain.com',); $emailValidator->isDisposable(); // true
此方法不接受字符串,只接受数组。
验证方法
isValid()
如果电子邮件有效,则返回true
。
如果电子邮件在本地语法检查失败或者在服务提供者的检查中失败,则认为它是无效的。请注意,一次性电子邮件是有效的电子邮件。
isDisposable()
如果电子邮件是一次性电子邮件,则返回true
。
isAlias()
如果电子邮件是别名,则返回true
。例如:test+mail@gmail.com
是test@gmail.com
的别名。
didYouMean()
如果电子邮件有一个简单且明显的错误,例如gmail.cm
而不是gmail.com
,则此方法将返回一个建议更正的字符串,否则将返回一个空字符串。
建议使用javascript
在客户端使用此功能,并允许他们在提交表单之前更正电子邮件。
isHighRisk()
大多数服务提供者都有一个风险分析工具。如果风险高,则此方法返回true
。