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