martian/spammailchecker

一个用于保护用户免于输入不存在/垃圾邮件地址的 Laravel 扩展包。

2.0.1 2024-03-06 17:42 UTC

This package is auto-updated.

Last update: 2024-09-30 20:24:28 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require Made in Nigeria

一个强大的 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。分数越高,电子邮件地址越可能是有效的。还可以配置源以确定电子邮件地址的来源。来源可以是signupcontact

        '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)。有关更多信息,请参阅许可文件