enricodias/email-validator

使用多个提供者验证和检查一次性/临时/废弃电子邮件

v0.7 2019-12-12 10:29 UTC

This package is auto-updated.

Last update: 2024-09-19 06:23:55 UTC


README

Build Status Codacy Badge Codacy Badge Latest version Downloads total License

验证和检查一次性/临时/废弃电子邮件。

安装

在项目的根目录中使用Composer安装此包。

composer require enricodias/email-validator

基本用法

$emailValidator = new \enricodias\EmailValidator\EmailValidator();
$emailValidator->validate('test+mail@gmail.co');

$emailValidator->isValid();      // false, gmail.co doesn't have valid MX entries
$emailValidator->isDisposable(); // false, gmail.co isn't a known domain for disposable emails
$emailValidator->isAlias();      // true, test+mail@gmail.co is alias for test@gmail.co
$emailValidator->didYouMean();   // test+mail@gmail.com

服务提供者

服务提供者是一个第三方服务,用于验证电子邮件,通常使用API。您可以在验证时注册多个提供者。

注册的提供者将按顺序使用,直到其中一个返回有效的响应。如果您想要一个提供者作为故障转移,这将特别有用。

默认启用MailCheck.ai。

$MailboxLayer = new \enricodias\EmailValidator\ServiceProviders\MailboxLayer('API_KEY');

$Mailgun = new \enricodias\EmailValidator\ServiceProviders\Mailgun('API_KEY');

$emailValidator->addProvider($MailboxLayer, 'MailboxLayer');
$emailValidator->addProvider($Mailgun); // the name is optional

$emailValidator->validate('test@email.com');

实现提供者

* Validator.pizza现在称为MailCheck.ai**该功能已记录,但截至目前,API从未返回建议。

自定义提供者

您可以通过实现类ServiceProviderInterface添加自定义提供者。您可以使用removeProvider()方法删除默认的MailCheck.ai提供者,或者使用clearProviders()方法删除所有提供者

$emailValidator = new \enricodias\EmailValidator\EmailValidator();

$emailValidator->clearProviders(); // remove all providers

$emailValidator->addProvider($CustomServiceProvider, 'My Custom Provider');

$emailValidator->validate('test@email.com');

您可以使用静态方法create()创建实例并链接方法

$emailValidator = \enricodias\EmailValidator\EmailValidator::create()
    ->removeProvider('MailCheck.ai');
    ->addProvider($CustomServiceProvider)
    ->validate('test@email.com');

请注意,未命名注册的提供者不能通过removeProvider()删除。

随机服务提供者

当使用多个提供者的免费层时,随机服务提供者列表非常有用。如果不进行随机排序,提供者将始终以相同的顺序使用,从而导致第一个提供者耗尽信用时的不必要的失败。

$emailValidator->clearProviders()
    ->addProvider($Provider1)
    ->addProvider($Provider2)
    ->shuffleProviders()
    ->validate('test@email.com');

工作原理

该类检查电子邮件语法是否有效,如果是,则调用服务提供者。

速率限制

由于大多数服务提供者要么是付费的,要么每小时每个IP有请求限制,因此如果电子邮件未通过本地验证检查,则不会发出请求。

本地域名列表

为了降低API请求的数量,本地检查包括一个包含最常见的一次性域名的列表。该列表旨在尽可能短,以免影响性能和避免需要常数更新。允许使用通配符*

其他域名

很可能您用户中最受欢迎的一次性电子邮件服务不在默认列表中,因此您可能希望使用addDomains()方法自定义列表

$emailValidator = \enricodias\EmailValidator\EmailValidator::create()
    ->addDomains(['*.domain.com'])
    ->validate('test@sub.domain.com',);

$emailValidator->isDisposable(); // true

此方法不接受字符串,只接受数组。

验证方法

isValid()

如果电子邮件有效,则返回true

如果电子邮件在本地语法检查失败或者在服务提供者的检查中失败,则认为它是无效的。请注意,一次性电子邮件是有效的电子邮件。

isDisposable()

如果电子邮件是一次性电子邮件,则返回true

isAlias()

如果电子邮件是别名,则返回true。例如:test+mail@gmail.comtest@gmail.com的别名。

didYouMean()

如果电子邮件有一个简单且明显的错误,例如gmail.cm而不是gmail.com,则此方法将返回一个建议更正的字符串,否则将返回一个空字符串。

建议使用javascript在客户端使用此功能,并允许他们在提交表单之前更正电子邮件。

isHighRisk()

大多数服务提供者都有一个风险分析工具。如果风险高,则此方法返回true