beeyev/disposable-email-filter-php

一次性(临时/垃圾/虚假)邮箱检测库。每周自动更新。


README

Latest Version on Packagist Supported PHP Versions

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.txtwhitelist.txt 文件中。

问题

错误报告和功能请求可以在 Github 问题跟踪器 上提交。

版权许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件

如果您喜欢这个项目,请考虑给我一个 ⭐