一个强大的 Laravel 包,旨在使用各种驱动程序轻松验证电子邮件地址,以防止各种垃圾邮件提供商的攻击。该软件包与 Laravel 的验证系统无缝集成,为验证表单和 RESTful API 中的电子邮件输入提供全面支持
服务 | 描述 | 司机 | 文档 | 支持 |
---|---|---|---|---|
当地的 | 垃圾邮件域的本地文本列表。 | 当地的 | 阅读更多 | ✅ 是的 |
偏僻的 | 使用 PHP 内置函数getmxrr() 、 checkdnsrr() 。 fsockopen() 验证电子邮件域 | 偏僻的 | 阅读更多 | ✅ 是的 |
抽象API | 使用 Abstract 的 API 套件来验证电子邮件域 | 抽象API | 阅读更多 | ✅ 是的 |
快速电子邮件验证 | 可靠、准确、经济且先进的电子邮件验证服务 | 快速电子邮件验证 | 阅读更多 | ✅ 是的 |
维里法利亚 | 基于网络的电子邮件验证服务,允许轻松上传和验证电子邮件地址列表 | 维里法利亚 | 阅读更多 | ✅ 是的 |
发送网格 | 基于云的 SMTP 提供商,允许您在发送之前验证电子邮件地址。 | 发送网格 | 阅读更多 | ✅ 是的 |
注意:更多服务将很快添加。 (您还可以通过添加更多服务来为该项目做出贡献 - ZeroBounce、Mailboxlayer、EmailListVerify、Emailable 等)
您可以通过 Composer 安装该软件包:
composer require martian/spammailchecker
Martian SpamMailChecker SpamMailCheckerServiceProvider::class,
config/app.php
并将以下行添加到aliases
数组中: ' SpamMailChecker ' => Martian SpamMailChecker Facades SpamMailChecker::class,
使用以下命令发布配置文件:
php artisan vendor:publish --provider= " MartianSpamMailCheckerProvidersSpamMailCheckerServiceProvider "
配置文件位于config/laravel-spammail-checker.php
。您可以配置该包以使用任何受支持的驱动程序。默认驱动程序是local
驱动程序,它使用垃圾邮件域的本地文本列表。
为了使用local
作为您选择的驱动程序,您需要将config/laravel-spammail-checker.php
配置文件中的default
键设置为local
:
' default ' => ' local ' ,
或者,您可以在.env
文件中将SPAM_MAIL_CHECKER_DEFAULT_DRIVER
环境变量设置为local
。
SPAM_MAIL_CHECKER_DEFAULT_DRIVER = local
本地驱动程序使用垃圾邮件域的本地文本列表。该文件位于resources/config/emails.txt
。您可以通过将更多域添加到blacklist
数组来包含更多域,或者通过将它们添加到whitelist
数组来排除域。
' drivers ' => [
' local ' => [
...
' whitelist ' => [
// Add domains you want the local driver to ignore here
' gmail.com ' ,
' yahoo.com ' ,
],
' blacklist ' => [
// Add domains you want the local driver to validate against here
' mailinator.com ' ,
' spam.com ' ,
],
]
]
更改配置文件后,使用以下命令清除配置和缓存:
php artisan optimize:clear
注意:本地驱动程序不区分大小写。因此,您无需担心电子邮件域的大小写。
为了使用remote
作为您选择的驱动程序,您需要将config/laravel-spammail-checker.php
配置文件中的default
键设置为remote
:
' driver ' => ' remote ' ,
或者您可以在.env
文件中将SPAM_MAIL_CHECKER_DEFAULT_DRIVER
环境变量设置为remote
。
SPAM_MAIL_CHECKER_DEFAULT_DRIVER = remote
远程驱动程序使用 PHP 内置函数getmxrr()
、 checkdnsrr()
。 fsockopen()
验证电子邮件域。您可以配置远程驱动程序是否检查 MX - getmxrr()
、 DNS - checkdnsrr()
和 SMTP - fsockopen
或验证电子邮件域。您还可以配置超时值(以秒为单位)。
' drivers ' => [
...
' remote ' => [
...
' check_dns ' => true, // When set to true, it will check for DNS
' check_smtp ' => false , // When set to true, it will check for SMTP
' check_mx ' => false , // When set to true, it will check for MX record
' timeout ' => 60 * 5 , // 5 minutes
]
]
为了使用abstractapi
作为您选择的驱动程序,您需要将config/laravel-spammail-checker.php
配置文件中的default
键设置为abstractapi
:
'default' => 'abstractapi',
或者,您可以在.env
文件中将SPAM_MAIL_CHECKER_DEFAULT_DRIVER
环境变量设置为abstractapi
。
SPAM_MAIL_CHECKER_DEFAULT_DRIVER = abstractapi
将从此处获得的ABSTRACTAPI_API_KEY
AbstractAPI 密钥添加到您的env
文件中。
ABSTRACTAPI_API_KEY=abstractapi_api_key
您可以配置score
以确定有效电子邮件地址的阈值。分数范围从 0 到 1。分数越高,电子邮件地址越有可能有效。您还可以通过将accept_disposable
设置为true
来接受一次性电子邮件地址。
' drivers ' => [
...
' abstractapi ' => [
...
' score ' => 0.5 , // 0.5 is the default score
' accept_disposable_email ' => true // When set to true, it will accept disposable email addresses
]
]
为了使用quickemailverification
作为您选择的驱动程序,您需要将config/laravel-spammail-checker.php
配置文件中的default
密钥设置为quickemailverification
:
'default' => 'quickemailverification',
或者,您可以在.env
文件中将SPAM_MAIL_CHECKER_DEFAULT_DRIVER
环境变量设置为quickemailverification
。
SPAM_MAIL_CHECKER_DEFAULT_DRIVER = quickemailverification
将从此处获得的QUICKEMAILVERIFICATION_API_KEY
QuickEmailVerification 密钥添加到您的env
文件中。
QUICKEMAILVERIFICATION_API_KEY = quickemailverification_api_key
您可以通过将accept_disposable
设置为true
将驱动程序配置为接受一次性电子邮件地址。
' drivers ' => [
...
' quickemailverification ' => [
...
' accept_disposable ' => true, // When set to true, it will accept disposable email addresses
]
]
为了使用verifalia
作为您选择的驱动程序,您需要将config/laravel-spammail-checker.php
配置文件中的default
密钥设置为verifalia
:
'default' => 'verifalia',
或者,您可以在.env
文件中将SPAM_MAIL_CHECKER_DEFAULT_DRIVER
环境变量设置为verifalia
。
SPAM_MAIL_CHECKER_DEFAULT_DRIVER = verifalia
为了使用 verifalia 服务,您需要在env
文件中设置登录凭据。您可以在此处创建用户后获取凭据。
VERIFALIA_USERNAME = verifalia_username
VERIFALIA_PASSWORD = verifalia_password
您可以通过将accept_disposable
设置为true
将驱动程序配置为接受一次性电子邮件地址。
' drivers ' => [
...
' verifalia ' => [
...
' accept_disposable ' => true, // When set to true, it will accept disposable email addresses
]
]
注意: verifalia 上的用户需要被授予使用 API 的权限。您可以通过转到此处并单击要授予权限的编辑用户来完成此操作。然后单击
Permissions
选项卡并检查Email validations
部分的适当权限。
为了使用sendgrid
作为您选择的驱动程序,您需要将config/laravel-spammail-checker.php
配置文件中的default
键设置为sendgrid
:
'default' => 'sendgrid',
或者,您可以在.env
文件中将SPAM_MAIL_CHECKER_DEFAULT_DRIVER
环境变量设置为sendgrid
。
SPAM_MAIL_CHECKER_DEFAULT_DRIVER = sendgrid
将您从这里获得的SENDGRID_API_KEY
Sendgrid 密钥添加到您的env
文件中。
SENDGRID_API_KEY = sendgrid_api_key
您可以通过将accept_disposable
设置为true
将驱动程序配置为接受一次性电子邮件地址。还可以配置分数以确定有效电子邮件地址的阈值。分数范围从 0 到 1。分数越高,电子邮件地址越有可能有效。还可以配置源以确定电子邮件地址的来源。来源可以是signup
或contact
。
' drivers ' => [
...
' sendgrid ' => [
...
' score ' => 0.5 , // 0.5 is the default score
' accept_disposable ' => true , // When set to true, it will accept disposable email addresses
' source ' => ' signup ' // The source is signup by default
]
]
为了使用该包,您需要在验证规则中调用spammail
验证规则。您还可以在rule
键下的config/laravel-spammail-checker.php
配置文件中将规则名称更改为您想要的任何名称,同样将error_message
键下的错误消息更改为您想要的名称。
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return IlluminateContractsValidationValidator
*/
protected function validator ( array $ data )
{
return Validator:: make ( $ data , [
' email ' => ' required|spammail|max:255 ' ,
]);
}
或者在您的请求文件中使用spammail
,如下所示:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules ()
{
return [
' email ' => ' required|spammail|max:255 ' ,
];
}
可以将自定义错误消息添加到spammail
验证规则中。
' email.spammail ' => ' This email address is invalid. ' , // Custom error message
或者您可以更改config/laravel-spammail-checker.php
配置文件中error_message
键下的错误消息。
' error_message ' => ' This email address is invalid. ' , // Custom error message
您还可以直接使用这些类,而不使用spammail
验证规则。当您想要在自己的自定义验证规则或自己的自定义类中使用该包时,这非常有用。
use Martian SpamMailChecker SpamMailChecker ;
public function checkEmail ( $ email )
{
$ spamMailChecker = new SpamMailChecker ();
$ spamMailChecker -> validate ( $ email );
}
您还可以直接使用SpamMailChecker
类而不实例化它。
use Martian SpamMailChecker Facades SpamMailChecker ;
public function checkEmail ( $ email )
{
SpamMailChecker:: validate ( $ email );
}
您还可以单独使用每个驱动程序,而不使用spammail
验证规则。当在特定情况下需要特定驱动程序时,这非常有用。
use Martian SpamMailChecker Drivers VerifaliaDriver ;
public function checkEmail ( $ email )
{
$ verifaliaDriver = new VerifaliaDriver ();
$ verifaliaDriver -> validate ( $ email );
}
use Martian SpamMailChecker Drivers SendGridDriver ;
public function checkEmail ( $ email )
{
$ sendGridDriver = new SendGridDriver ();
$ sendGridDriver -> validate ( $ email );
}
use Martian SpamMailChecker Drivers AbstractApiDriver ;
public function checkEmail ( $ email )
{
$ abstractApiDriver = new AbstractApiDriver ();
$ abstractApiDriver -> validate ( $ email );
}
use Martian SpamMailChecker Drivers RemoteDriver ;
public function checkEmail ( $ email )
{
$ remoteDriver = new RemoteDriver ();
$ remoteDriver -> validate ( $ email );
}
use Martian SpamMailChecker Drivers LocalDriver ;
public function checkEmail ( $ email )
{
$ localDriver = new LocalDriver ();
$ localDriver -> validate ( $ email );
}
use Martian SpamMailChecker Drivers QuickEmailVerificationDriver ;
public function checkEmail ( $ email )
{
$ quickEmailVerificationDriver = new QuickEmailVerificationDriver ();
$ quickEmailVerificationDriver -> validate ( $ email );
}
composer test
请参阅变更日志以了解最近更改的更多信息。
请随意分叉该项目并提出拉取请求。有关更多信息,请查看贡献以获取详细信息。
如果您发现任何与安全相关的问题,请发送电子邮件至 [email protected],而不是使用问题跟踪器。
麻省理工学院许可证 (MIT)。请参阅许可证文件以获取更多信息。