arturbruno/laravel-mailgun-email-validation
Laravel validation rule that checks emails with PHP FILTER_VALIDATE_EMAIL then Mailgun’s Email Validation API. Supports role/disposable checks, mailbox verification, and strict mode to fail when Mailgun can’t be reached.
Pros:
filter_var().Cons:
Laravel Compatibility:
validateEmail rule in FormRequest classes).creating/updating events).MailgunValidationRule), which can be extended or mocked for testing.Mailgun Setup Requirements:
.env (e.g., MAILGUN_API_KEY).Mockery or Vcr).admin@domain.com)..env is never committed to version control.filter_var or manual review)?spatie/laravel-activitylog + custom validation) suffice if Mailgun isn’t used for emails?Validator facade or custom rules (e.g., MailgunValidationRule::validate()).FormRequest classes where email validation is needed (e.g., RegisterRequest).ModelObserver or creating/updating events.Prerequisites:
.env:
MAILGUN_API_KEY=your_key
MAILGUN_DOMAIN=yourdomain.mailgun.org
composer require arturbruno/laravel-mailgun-email-validation
Integration Steps:
use App\Rules\MailgunValidationRule;
public function rules()
{
return [
'email' => ['required', 'email', new MailgunValidationRule],
];
}
public function creating(User $user)
{
$validator = Validator::make(['email' => $user->email], [
'email' => new MailgunValidationRule,
]);
if ($validator->fails()) {
throw new \Exception('Invalid email');
}
}
use ArturBruno\MailgunValidation\Rules\MailgunValidationRule as BaseRule;
class ExtendedMailgunRule extends BaseRule
{
public function passes($attribute, $value)
{
// Add custom logic before/after Mailgun check
return parent::passes($attribute, $value);
}
}
Testing:
$this->mock(Mailgun::class)->shouldReceive('validateEmail')
->once()
->andReturn(['valid' => true]);
.env and Mailgun settings are consistent across environments (dev/stage/prod).Log::error($validator->errors())).MailgunValidationJob) for async processing.| **Failure Scenario
How can I help you explore Laravel packages today?