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

1.0.0 2025-10-18 02:13 UTC

This package is auto-updated.

Last update: 2025-10-18 02:28:24 UTC


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