beeyev / disposable-email-filter-php
一次性(临时/垃圾/虚假)邮箱检测库。每周自动更新。
Requires
- php: ^7.2 || ^8.0
Requires (Dev)
- ext-json: *
- friendsofphp/php-cs-fixer: ^3.4
- kubawerlos/php-cs-fixer-custom-fixers: ^3.7
- phpstan/phpstan: ^1.11
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^8.5 || ^9
- symplify/phpstan-rules: ^12.3
- dev-master
- v1.3.39
- v1.3.38
- v1.3.37
- v1.3.36
- v1.3.35
- v1.3.34
- v1.3.33
- v1.3.32
- v1.3.31
- v1.3.30
- v1.3.29
- v1.3.28
- v1.3.27
- v1.3.26
- v1.3.25
- v1.3.24
- v1.3.23
- v1.3.22
- v1.3.21
- v1.3.20
- v1.3.19
- v1.3.18
- v1.3.17
- v1.3.16
- v1.3.15
- v1.3.14
- v1.3.13
- v1.3.12
- v1.3.11
- v1.3.10
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- dev-filter-list-update/2024-09-25_11-25-25_(UTC)
- dev-filter-list-update/2024-09-22_11-22-43_(UTC)
- dev-filter-list-update/2024-07-23_19-04-33_(UTC)
This package is auto-updated.
Last update: 2024-09-25 11:26:24 UTC
README
PHP包,用于检测一次性(临时/垃圾/虚假)电子邮件地址。它不依赖于框架,但支持Laravel。它验证电子邮件地址以确保它们是真实的,这对于管理账户注册和评估系统中的有效电子邮件地址数量非常有用。
此工具还有助于避免通信错误和阻止垃圾邮件地址。
🚀 查找速度极快 O(1)
,因为一次性电子邮件域名是使用本地原生PHP哈希集存储的。
🚡 一次性电子邮件域名的列表会定期从受信任的外部源自动更新。
📦 安装和使用示例
注意
阅读以下部分以获取Laravel特定说明。
使用以下命令通过composer安装此包
composer require beeyev/disposable-email-filter-php
基本用法
检查电子邮件地址是否为一次性地址
<?php require __DIR__ . '/vendor/autoload.php'; use Beeyev\DisposableEmailFilter\DisposableEmailFilter; $disposableEmailFilter = new DisposableEmailFilter(); // Check if email address is disposable $disposableEmailFilter->isDisposableEmailAddress('ostap@gmail.com'); // false $disposableEmailFilter->isDisposableEmailAddress('john@tempmailer.com'); // true
添加自定义一次性(黑名单)和白名单域名
注意:白名单域名的优先级高于黑名单域名。
<?php require __DIR__ . '/vendor/autoload.php'; use Beeyev\DisposableEmailFilter\DisposableEmailFilter; $disposableEmailFilter = new DisposableEmailFilter(); // Add multiple custom domains to blacklist $disposableEmailFilter->blacklistedDomains()->addMultiple(['mailinator.com', '10minute-mail.org']); // Add one domain to whitelist $disposableEmailFilter->whitelistedDomains()->add('tempmailer.com'); $disposableEmailFilter->isDisposableEmailAddress('john@tempmailer.com'); // false (because it's whitelisted now) $disposableEmailFilter->isDisposableEmailAddress('john@mailinator.com'); // true $disposableEmailFilter->isDisposableEmailAddress('john@10minute-mail.org'); // true $disposableEmailFilter->isDisposableEmailAddress('john@gmail.com'); // false
还可以使用构造函数依赖关系添加黑名单和白名单域名
use Beeyev\DisposableEmailFilter\CustomEmailDomainFilter\CustomEmailDomainFilter; use Beeyev\DisposableEmailFilter\DisposableEmailFilter; $blacklistedDomains = new CustomEmailDomainFilter(['blacklisted1.com', 'blacklisted2.com', 'blacklisted3.com']); $whitelistedDomains = new CustomEmailDomainFilter(['abc2.com', 'whitelisted1.com']); $disposableEmailFilter = new DisposableEmailFilter($blacklistedDomains, $whitelistedDomains); $disposableEmailFilter->isDisposableEmailAddress('test@whitelisted1.com'); // false - whitelisted
注意:您可以通过创建一个实现
CustomEmailDomainFilterInterface
的自定义类来开发自己的过滤逻辑
处理异常
如果您尝试传递空字符串或格式无效的字符串,将会抛出异常。
use Beeyev\DisposableEmailFilter\DisposableEmailFilter; use Beeyev\DisposableEmailFilter\Exceptions\InvalidEmailAddressException; $disposableEmailFilter = new DisposableEmailFilter(); try { $disposableEmailFilter->isDisposableEmailAddress('john:gmail.com'); // Exception will be thrown because of invalid email format } catch (InvalidEmailAddressException $e) { echo $e->getMessage(); }
如果您预计电子邮件地址可能无效且不希望将代码包装在try/catch中,
您可以使用isDisposableEmailAddressSafe
方法在检查是否为一次性地址之前检查电子邮件地址是否正确格式化
$disposableEmailFilter = new DisposableEmailFilter(); $emailAddress = 'john:gmail.com'; if ($disposableEmailFilter->isEmailAddressValid($emailAddress)) { $disposableEmailFilter->isDisposableEmailAddress($emailAddress); }
Laravel特定用法
此包包括Laravel的服务提供者和表单验证规则。
安装包(Laravel)
composer require beeyev/disposable-email-filter-php
该包将自动使用Laravel自动发现机制进行注册。
但如果您需要手动进行,您可以将以下行添加到config/app.php
文件中的providers
数组中
Beeyev\DisposableEmailFilter\Adapters\Laravel\DisposableEmailFilterServiceProvider::class,
表单验证(Laravel)
使用验证规则not_disposable_email
或对象new NotDisposableEmail()
,以检查特定字段不包含一次性电子邮件地址。
注意
❗ 请将其放置在电子邮件验证器之后,以确保仅处理有效的电子邮件。
示例
// Using validation rule name: 'email_field' => 'required|email|not_disposable_email', // Or using a validation rule object: 'email_field' => ['email', new NotDisposableEmail()],
使用外观(Laravel)
您可以使用DisposableEmail
外观来访问DisposableEmailFilter
实例
use Beeyev\DisposableEmailFilter\Adapters\Laravel\Facades\DisposableEmail; DisposableEmail::isEmailAddressValid('foo@fakemail.com');
配置文件和翻译(Laravel)
可选地,您可以将配置文件和翻译发布以自定义包的行为
php artisan vendor:publish --tag=disposable-email-filter
此命令将在config
目录中创建一个disposable-email-filter.php
配置文件,并在lang/vendor/disposable-email-filter
目录中创建翻译文件。
更新
由于一次性电子邮件域名的列表会定期更新,因此保持包最新很重要。
当列表更新时,将发布新版本的包的PATCH
。
这些更新是安全且非破坏性的,允许您通过以下composer命令更新包
composer update beeyev/disposable-email-filter-php
您可以在CI/CD管道中部署项目之前运行此命令。
贡献
如果您想添加新功能、改进现有功能或修复错误,请随时为此项目做出贡献。
要添加新的可丢弃域名,您可以更新 blacklist.txt
文件并创建一个拉取请求。
或者,您可以为希望添加到黑名单或白名单的域名 创建一个问题。
外部来源
本地黑名单和白名单存储在 blacklist.txt 和 whitelist.txt 文件中。
问题
错误报告和功能请求可以在 Github 问题跟踪器 上提交。
版权许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。
如果您喜欢这个项目,请考虑给我一个 ⭐