printnow / free-email-checker
Detect whether an email is from common free or disposable email providers.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/printnow/free-email-checker
Requires
- php: ^8.1
Requires (Dev)
- illuminate/support: ^10.0
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- phpunit/phpunit: ^10.0
README
一个简单高效的 PHP 包,用于检测邮箱是否来自免费邮箱提供商。
特性
- ✅ PHP 8.1+ readonly 属性
- 🚀 O(1) 查找,3700+ 域名
- 🔄 每周自动更新
- 📦 Laravel 自动集成
- 🧪 完整测试覆盖
安装
composer require printnow/free-email-checker
基础使用
use Printnow\FreeEmailChecker\Checker; $checker = new Checker(); $result = $checker->check('user@gmail.com'); if ($result->isFree()) { echo "这是免费邮箱: " . $result->getDomain(); } else { echo "这不是免费邮箱"; }
结果对象
$result = $checker->check('user@gmail.com'); // 直接访问 readonly 属性 $result->isFree; // bool: 是否为免费邮箱 $result->domain; // string|null: 域名 $result->email; // string: 原始邮箱地址 // 转换为其他格式 $result->toArray(); // array: 转为数组 $result->toJson(); // string: 转为 JSON
Laravel 使用
安装后会自动注册服务,可直接使用 Facade:
use Printnow\FreeEmailChecker\Laravel\FreeEmailFacade as FreeEmail; $result = FreeEmail::check('user@gmail.com'); if ($result->isFree) { // 处理免费邮箱逻辑 }
在验证规则中使用
use Illuminate\Validation\Validator; use Printnow\FreeEmailChecker\Laravel\FreeEmailFacade as FreeEmail; Validator::extend('not_free_email', function ($attribute, $value) { return !FreeEmail::check($value)->isFree; });
测试
composer test
性能
- O(1) 查找复杂度
- < 0.001ms/次查询
- 静态缓存,零重复 I/O
域名来源
域名清单来自 tbrianjones/free_email_provider_domains,通过 GitHub Actions 每周自动更新,包含 3700+ 个免费邮箱域名。
License
MIT