一个强大的 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)。请参阅许可证文件以获取更多信息。