大耳早 / daves-email-validation-tool
一个易于使用、准确性尚可且可扩展的PHP 7+版本邮箱验证库
Requires
- php: >=7.4
- ext-json: *
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^9.3
- dev-master
- 1.2.0
- v1.1.1
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
- v0.1.16
- v0.1.15
- v0.1.14
- v0.1.13
- v0.1.12
- v0.1.11
- v0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-update-providers/top-level-domains
- dev-bump-mockery-phpunit-versions
- dev-ISSUE-22-DNS-check-update
- dev-more-php7.4-updates
- dev-php7.4
- dev-daveearley-patch-1
- dev-fix-yahoo.no-false-negative
- dev-analysis-XpgLmo
- dev-develop
This package is auto-updated.
Last update: 2024-09-13 18:03:02 UTC
README
PHP 7+的可扩展邮箱验证库
该库的目标是提供比仅检查邮箱格式更详细的邮箱验证报告,并且可以轻松添加自定义验证。
目前该工具检查以下内容
^ 用于这些检查的数据可以在此处找到这里
安装
composer require daveearley/daves-email-validation-tool
用法
快速入门
// Include the composer autoloader require __DIR__ . '/vendor/autoload.php'; $validator = EmailValidation\EmailValidatorFactory::create('dave@gmoil.con'); $jsonResult = $validator->getValidationResults()->asJson(); $arrayResult = $validator->getValidationResults()->asArray(); echo $jsonResult;
预期输出
{ "valid_format": true, "valid_mx_records": false, "possible_email_correction": "dave@gmail.com", "free_email_provider": false, "disposable_email_provider": false, "role_or_business_email": false, "valid_host": false }
添加自定义验证
要添加自定义验证,只需扩展EmailValidation\Validations\Validator类并实现getResultResponse()
和getValidatorName()
方法。然后使用EmailValidation\EmailValidator->registerValidator()
方法注册验证。
示例代码
// Validations/GmailValidator.php
<?php namespace EmailValidation\Validations; class GmailValidator extends Validator { public function getValidatorName(): string { return 'is_gmail'; } public function getResultResponse(): bool { $hostName = $this->getEmailAddress()->getHostPart(); return strpos($hostName, 'gmail.com') !== false; } }
// file-where-you-are-doing-your-validation.php
<?php use EmailValidation\Validations\GmailValidator; require __DIR__ . '/vendor/autoload.php'; $validator = EmailValidation\EmailValidatorFactory::create('dave@gmail.com'); $validator->registerValidator(new GmailValidator()); echo $validator->getValidationResults()->asJson();
预期输出将是
{ "is_gmail": true, "valid_format": true, "valid_mx_records": false, "possible_email_correction": "", "free_email_provider": true, "disposable_email_provider": false, "role_or_business_email": false, "valid_host": false }
在Docker中运行
docker-compose up -d
然后您可以通过访问http://localhost:8880?email=email.to.validate@example.com来验证邮箱。结果将如上所述的JSON字符串。
添加自定义数据源
您可以通过创建一个实现EmailValidation\EmailDataProviderInterface的数据提供者类来创建自己的数据提供者。
示例代码
<?php declare(strict_types=1); namespace EmailValidation; class CustomEmailDataProvider implements EmailDataProviderInterface { public function getEmailProviders(): array { return ['custom.com']; } public function getTopLevelDomains(): array { return ['custom']; } public function getDisposableEmailProviders(): array { return ['custom.com', 'another.com']; } public function getRoleEmailPrefixes(): array { return ['custom']; } }
常见问题解答
这个验证准确吗?
不,这些测试都不是100%准确的。与任何邮箱验证一样,总会有假阳性或假阴性。唯一保证邮箱有效的方法是发送邮件并请求回复。然而,这个库仍然可以用来检测一次性邮箱等,并可以作为良好的第一道防线。
我可以手动更新一次性邮箱提供者数据吗?
是的,该项目依赖于这个优秀的仓库来获取一次性邮箱提供者的列表。要从该仓库获取最新列表,您可以运行以下命令
./scripts/update-dispsable-email-providers.php
from the command line. 这将获取数据并将其保存到./src/data/disposable-email-providers.php