Bibliothèque PHP — Package Composer

composer require nsoftware/email-validator-php

Client API typé pour email-validaton.com. Asynchrone, avec cache, prêt pour Laravel.

Installation

composer require nsoftware/email-validator-php

Prérequis : PHP 8.1+, Guzzle 7, cache PSR-6 (facultatif), logger PSR-3 (facultatif).

Démarrage rapide

<?php
require 'vendor/autoload.php';

use NSoftware\EmailValidator\Client;

$client = new Client('ev_your_api_key');

// Verify one email
$result = $client->verify('user@example.com');

if ($result->isValid()) {
    echo "Valid — confidence: {$result->confidence}";
}
if ($result->isDisposable()) {
    echo "Disposable email — reject!";
}

Vérification asynchrone

$client->verifyAsync('user@domain.com')
    ->then(fn($result) => echo $result->status);

// Bulk async with controlled concurrency
$client->verifyBulkAsync($emails, concurrency: 10)
    ->then(function(array $results) {
        foreach ($results as $email => $r) {
            echo "$email: {$r->status}\n";
        }
    });

Cache PSR-6

use Symfony\Component\Cache\Adapter\FilesystemAdapter;

$cache = new FilesystemAdapter('email-validator', 300);
$client = new Client('ev_...', cache: $cache);

// Account info auto-cached for 5 min
$account = $client->getAccount();

// Force refresh
$account = $client->getAccount(forceRefresh: true);

DTO typés

ClassePropriétés
VerificationResult email, status, reason, confidence, mxServer, mxList, smtpResponse, sourceIp, durationMs, remainingCredits, isYahoo
AccountInfo email, plan, planName, creditsRemaining, creditsUsed, creditsLimit, planType, subscriptionActive, subscriptionCancelled, subscriptionExpires, freeRemaining, totalRemaining, isAdmin
CreditInfo hasCredits, creditsRemaining

Chaque DTO dispose d'une méthode statique fromApiResponse(array) factory and toArray() serialization.

Prédicats pratiques

MéthodeRetourneExplication
isValid()boolstatus === 'valid'
isInvalid()boolstatus === 'invalid'
isRisky()boolstatus === 'risky'
isCatchAll()boolstatus === 'catch_all'
isDisposable()boolstatus === 'disposable'
isDeliverable()boolvalid || risky || catch_all
costCredit()boolvalid || invalid || over_quota || disposable

Intégration Laravel

Le package s'enregistre automatiquement via la découverte automatique de Laravel. Ajoutez simplement votre clé API dans .env:

EMAIL_VALIDATOR_API_KEY=ev_your_key

Utilisez ensuite l'injection de dépendances ou la façade n'importe où :

use NSoftware\EmailValidator\Client;
use EmailValidator;  // Facade alias

class SignupController
{
    public function store(Request $request, Client $validator)
    {
        $result = $validator->verify($request->email);

        if (!$result->isDeliverable()) {
            return back()->withErrors(['email' => 'Invalid email']);
        }

        // Create user...
    }
}

// Or with the facade:
$result = EmailValidator::verify('user@example.com');
$account = EmailValidator::getAccount();

Gestion des erreurs

ExceptionHTTPCas
AuthenticationException401/403Clé API incorrecte ou manquante
RateLimitException42960 req/min ou plafond horaire. $e->retryAfterSeconds
NoCreditsException429Crédits épuisés
ApiException--Erreur réseau, réponse inattendue
try {
    $result = $client->verify('user@example.com');
} catch (RateLimitException $e) {
    sleep($e->retryAfterSeconds);
    // retry
} catch (NoCreditsException $e) {
    // prompt user to upgrade
} catch (ApiException $e) {
    logger()->error("Validation failed: {$e->getMessage()}");
}

Contenu du package

DossierDescription
src/Client.phpClient API principal avec méthodes synchrones et asynchrones
src/Data/DTO immuables (VerificationResult, AccountInfo, CreditInfo)
src/Exceptions/Exceptions typées avec codes HTTP
src/Laravel/Fournisseur de services, façade, configuration publiable
tests/Tests PHPUnit
config/Configuration Laravel (publier avec artisan)
Télécharger email-validator-php.zip Retour aux extensions

v5.0.0 · Licence MIT · PHP 8.1+ · Guzzle 7 · PSR-6 / PSR-3