/laravel-mailgun-email-validation

Laravel email validation that uses the Mailgun API for a three-step validation check

Primary LanguagePHPMIT LicenseMIT

Laravel Mailgun Email Validation

Laravel email validation that uses the Mailgun API for a three-step validation check.

To find examples of how validation rules can be applied in the Laravel framework, please view the validation docs

Install

Require via composer.

composer require kouz/laravel-mailgun-email-validation

For Laravel >=5.5 the package will be discoverd. For Laravel <=5.4 add package to list of service providers in config/app.php

<?php
  //config/app.php
  
    'providers' => [
        Kouz\LaravelMailgunValidation\ServiceProvider::class,
    ],

Publish and fill out the config/mailgun-email-validation.php file with your Mailgun API key.

php artisan vendor:publish --provider="Kouz\LaravelMailgunValidation\ServiceProvider"

Basic Usage

Use the following rule to validate your email fields. The rule will first check the address against PHP's FILTER_VALIDATE_EMAIL and then will call the Mailgun API.

$request->validate([
    'email' => ['required', 'mailgun_email'],
]);

Further flags can added to the rule to make the validation more strict.

$request->validate([
    'email' => ['required', 'mailgun_email:role,disposable,mailbox,strict'],
]);

Each flag if present, will add the following validation rules:

  • role Don't allow role-based addresses such as ‘admin’, ‘sales’, ‘webmaster’...
  • disposable Don't allow disposable email domains.
  • mailbox A call is made to the ESP to verify the mailboxes existence. Add strict flag to ensure that Mailgun was able to verify a mailbox and didn't return "Unknown".
  • strict Always require a response from Mailgun to validate. By default if a API request fails, the validation will pass. The strict flag ensures that a Mailgun response was recieved.

Recommended Usage

The following configuration will try to check if the email addresses mailbox exists and is not a disposable email address. If Mailgun is not contactable or Mailgun can't perform the mailbox check, the validation will fall back on PHP's FILTER_VALIDATE_EMAIL.

$request->validate([
    'email' => ['required', 'mailgun_email:disposable,mailbox'],
]);

License

This project is licensed under a MIT License which you can find in this LICENSE.

Feedback

If you have any feedback, comments or suggestions, please feel free to open an issue within this repository.

Laravel Validation Rules

This package is part of the Laravel Validation Rules collection. If you're after more useful validation rules, head to the Laravel Validation Rules website.