一個強大的 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)。請參閱許可證文件以獲取更多資訊。