martian / spammailchecker
一个用于保护用户免于输入不存在/垃圾邮件地址的 Laravel 扩展包。
Requires
- php: ^7.2|^7.4|^8.0
- guzzlehttp/guzzle: ^6.0|^7.0
- illuminate/support: ^8.0|^9.0|^10.0
- laravel/framework: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
- quickemailverification/quickemailverification: *
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
一个强大的 Laravel 扩展包,可轻松验证电子邮件地址,以防止各种垃圾邮件提供商。无缝集成到 Laravel 的验证系统中,此扩展包为表单和 RESTful API 中的电子邮件输入验证提供全面支持。
支持的电子邮件验证服务
注意:很快将添加更多服务。(您也可以通过添加更多服务(如 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="Martian\SpamMailChecker\Providers\SpamMailCheckerServiceProvider"
配置
配置文件位于 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 驱动程序配置
-
为了将
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
添加到您的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驱动配置
-
为了将
quickemailverification
作为您首选的驱动程序,您需要在config/laravel-spammail-checker.php
配置文件中将default
键设置为quickemailverification
。'default' => 'quickemailverification',
-
或者,您可以在
.env
文件中将环境变量SPAM_MAIL_CHECKER_DEFAULT_DRIVER
设置为quickemailverification
。SPAM_MAIL_CHECKER_DEFAULT_DRIVER=quickemailverification
-
将您从这里获得的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驱动配置
-
为了使用
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驱动配置
-
为了将
sendgrid
作为您首选的驱动程序,您需要在config/laravel-spammail-checker.php
配置文件中将default
键设置为sendgrid
。'default' => 'sendgrid',
-
或者,您可以在
.env
文件中将环境变量SPAM_MAIL_CHECKER_DEFAULT_DRIVER
设置为sendgrid
。SPAM_MAIL_CHECKER_DEFAULT_DRIVER=sendgrid
-
将您从这里获得的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
验证规则。您还可以在config/laravel-spammail-checker.php
配置文件中的rule
键下将规则名称更改为您想要的名称,同样在error_message
键下更改错误消息。
/** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'email' => 'required|spammail|max:255', ]); }
或者,在您的Requests文件中这样使用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
验证规则的情况下单独使用每个驱动程序。这在特定情况下需要某个驱动程序时非常有用。
使用VerifaliaDriver
use Martian\SpamMailChecker\Drivers\VerifaliaDriver; public function checkEmail($email) { $verifaliaDriver = new VerifaliaDriver(); $verifaliaDriver->validate($email); }
使用SendGridDriver
use Martian\SpamMailChecker\Drivers\SendGridDriver; public function checkEmail($email) { $sendGridDriver = new SendGridDriver(); $sendGridDriver->validate($email); }
使用AbstractApiDriver
use Martian\SpamMailChecker\Drivers\AbstractApiDriver; public function checkEmail($email) { $abstractApiDriver = new AbstractApiDriver(); $abstractApiDriver->validate($email); }
使用RemoteDriver
use Martian\SpamMailChecker\Drivers\RemoteDriver; public function checkEmail($email) { $remoteDriver = new RemoteDriver(); $remoteDriver->validate($email); }
使用LocalDriver
use Martian\SpamMailChecker\Drivers\LocalDriver; public function checkEmail($email) { $localDriver = new LocalDriver(); $localDriver->validate($email); }
使用QuickEmailVerificationDriver
use Martian\SpamMailChecker\Drivers\QuickEmailVerificationDriver; public function checkEmail($email) { $quickEmailVerificationDriver = new QuickEmailVerificationDriver(); $quickEmailVerificationDriver->validate($email); }
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
请随意fork此项目并提交pull request。有关详细信息,请参阅贡献指南。
安全
如果您发现任何与安全相关的问题,请通过电子邮件hendurhance.dev@gmail.com报告,而不是使用问题跟踪器。
鸣谢
许可协议
MIT许可(MIT)。有关更多信息,请参阅许可文件。