Aller au contenu

Tutoriels5 min de lecture

Envoyer des e-mails avec Laravel

Apprenez à envoyer des e-mails dans Laravel avec le package Emailit pour Laravel. Il s’intègre comme transport mail natif et donne accès à toute l’API Emailit via une Facade.

GPar

Envoyer des e-mails avec Laravel

Laravel gère très bien l’e-mail dès l’installation, mais il vous faut tout de même un service de livraison fiable derrière. Le package Emailit Laravel se branche directement sur le système mail de Laravel en tant que transport natif. Vos Mailables, vos Notifications et vos appels à Mail::send() existants fonctionnent sans aucune modification du code. En prime, vous accédez à toute l’API Emailit via une Facade pratique.

L’envoi d’e-mails est l’une des tâches les plus courantes d’une application Laravel. Confirmations d’inscription, réinitialisations de mot de passe, reçus de commande, suivis d’expédition et newsletters marketing dépendent tous d’une livraison fiable. Laravel fournit une couche d’abstraction mail puissante, mais la livraison elle-même dépend du transport que vous configurez. Une API e-mail comme Emailit vous apporte une excellente délivrabilité, le suivi des livraisons, la gestion des rebonds et des statistiques détaillées, sans gérer de serveurs SMTP ni vous soucier de la réputation de vos IP.

Dans ce guide, nous verrons comment configurer Emailit dans une application Laravel et envoyer des e-mails à la fois avec le système mail standard de Laravel et avec la Facade Emailit.

Prérequis

  • PHP 8.1 ou supérieur
  • Laravel 10, 11 ou 12
  • Un compte Emailit avec une clé API

Installation

Installez le package avec Composer :

composer require emailit/emailit-laravel

Le package découvre automatiquement son service provider : aucun enregistrement manuel n’est nécessaire. Il fonctionne directement avec Laravel 10, 11 et 12.

Configuration

Ajoutez votre clé API dans .env :

EMAILIT_API_KEY=your_api_key

Définissez Emailit comme mailer par défaut :

MAIL_MAILER=emailit

Ajoutez le mailer emailit au tableau mailers de votre fichier config/mail.php :

'mailers' => [
    // ...

    'emailit' => [
        'transport' => 'emailit',
    ],
],

Si besoin, publiez le fichier de configuration pour personnaliser l’URL de base de l’API :

php artisan vendor:publish --tag=emailit-config

La configuration est volontairement minimale. Une fois votre clé API et votre mailer par défaut définis, Laravel fait automatiquement passer tous les e-mails sortants par Emailit. Inutile de configurer hôtes SMTP, ports, chiffrement ou identifiants, comme avec un serveur mail traditionnel.

Envoyer des e-mails avec Laravel Mail

Une fois la configuration faite, toutes les fonctionnalités mail de Laravel fonctionnent telles quelles. Rien ne change dans votre code existant.

Avec un Mailable

Créez une classe Mailable comme d’habitude :

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class WelcomeEmail extends Mailable
{
    use Queueable, SerializesModels;

    public function __construct(
        public readonly User $user,
    ) {}

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Welcome to Our App',
        );
    }

    public function content(): Content
    {
        return new Content(
            view: 'emails.welcome',
        );
    }
}

Puis envoyez-la :

use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;

Mail::to('user@example.com')->send(new WelcomeEmail($user));

Les e-mails en file d’attente, les Mailables Markdown et les Notifications fonctionnent exactement comme prévu. Emailit se place de façon transparente derrière la couche mail de Laravel : vous pouvez le substituer à n’importe quel transport existant, comme SMTP, Mailgun ou SES, sans toucher au code de votre application. Il est donc facile de tester Emailit en parallèle de votre fournisseur actuel ou de migrer progressivement.

Utiliser la Facade Emailit

Pour les fonctionnalités qui dépassent le système mail de Laravel, comme les modèles avec variables, les envois programmés ou la gestion des ressources de l’API, utilisez la Facade Emailit. Elle vous donne un accès direct à l’ensemble du SDK PHP d’Emailit.

Envoyer un e-mail via l’API

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'    => 'hello@yourdomain.com',
    'to'      => ['user@example.com'],
    'subject' => 'Hello from Emailit',
    'html'    => '<h1>Welcome!</h1>',
]);

echo $email->id;
echo $email->status;

Envoyer avec un modèle

Appelez les modèles créés dans le tableau de bord Emailit et passez-leur des variables dynamiques :

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'      => 'hello@yourdomain.com',
    'to'        => 'user@example.com',
    'template'  => 'welcome_email',
    'variables' => [
        'name'    => 'John Doe',
        'company' => 'Acme Inc',
    ],
]);

Les modèles côté serveur sont une approche très efficace pour les applications Laravel. Vos designers et vos marketeurs peuvent modifier le contenu, le style et la mise en page des e-mails dans le tableau de bord Emailit, sans changement de code ni nouveau déploiement. Le code PHP se contente de transmettre les données, et le modèle se charge du rendu.

Programmer un e-mail

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'         => 'reminders@yourdomain.com',
    'to'           => 'user@example.com',
    'subject'      => 'Appointment Reminder',
    'html'         => '<p>Your appointment is tomorrow at 2 PM.</p>',
    'scheduled_at' => '2026-04-10T09:00:00Z',
]);

Les e-mails programmés sont entièrement gérés par l’API Emailit : ils fonctionnent donc indépendamment du système de files d’attente de Laravel. C’est idéal pour les rappels de rendez-vous, les avis de renouvellement d’abonnement et les campagnes liées à une échéance, quand vous voulez une livraison garantie à une heure précise, même si votre serveur d’application tombe en panne.

Envoyer avec des pièces jointes

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'        => 'invoices@yourdomain.com',
    'to'          => 'customer@example.com',
    'subject'     => 'Your Invoice #12345',
    'html'        => '<p>Please find your invoice attached.</p>',
    'attachments' => [
        [
            'filename'     => 'invoice.pdf',
            'content'      => base64_encode(file_get_contents('invoice.pdf')),
            'content_type' => 'application/pdf',
        ],
    ],
]);

Gérer les ressources

La Facade expose tous les services de l’API Emailit : vous pouvez gérer toute votre infrastructure e-mail depuis Laravel.

Domaines

use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->create([
    'name' => 'example.com',
    'track_loads' => true,
    'track_clicks' => true,
]);

$domain = Emailit::domains()->verify('sd_123');

Gérer les domaines d’envoi via l’API est utile pour les plateformes SaaS qui doivent configurer un domaine personnalisé pour chaque client. Vous pouvez automatiser tout le processus de vérification des domaines, y compris le contrôle des enregistrements DNS, directement depuis votre application Laravel.

Contacts

use Emailit\Laravel\Facades\Emailit;

$contact = Emailit::contacts()->create([
    'email' => 'user@example.com',
    'first_name' => 'John',
    'last_name' => 'Doe',
]);

$contacts = Emailit::contacts()->list();

Vérification d’e-mails

use Emailit\Laravel\Facades\Emailit;

$result = Emailit::emailVerifications()->verify([
    'email' => 'test@example.com',
]);

echo $result->status; // valid
echo $result->risk;   // low

Vérifier les adresses dès l’inscription ou l’envoi d’un formulaire vous aide à garder une liste de contacts propre et protège votre réputation d’expéditeur. Un taux de rebond élevé dû à des adresses invalides peut envoyer vos e-mails dans les spams : la vérification est donc une bonne pratique pour toute application Laravel qui envoie des e-mails transactionnels ou marketing à grande échelle.

Injection de dépendances

Si vous préférez ne pas utiliser de Facades, vous pouvez injecter directement le client :

use Emailit\EmailitClient;

class EmailController extends Controller
{
    public function send(EmailitClient $emailit)
    {
        $email = $emailit->emails()->send([
            'from'    => 'hello@yourdomain.com',
            'to'      => ['user@example.com'],
            'subject' => 'Hello',
            'html'    => '<p>Hi there!</p>',
        ]);

        return response()->json(['id' => $email->id]);
    }
}

Le conteneur de services de Laravel résout automatiquement l’instance EmailitClient avec la clé API de votre configuration : vous profitez du même confort que la Facade, avec la testabilité de l’injection de dépendances.

Gestion des erreurs

Le SDK PHP sous-jacent lève des exceptions typées : vous pouvez donc intercepter chaque type d’erreur :

use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\ApiErrorException;
use Emailit\Laravel\Facades\Emailit;

try {
    Emailit::emails()->send([...]);
} catch (AuthenticationException $e) {
    // Invalid API key (401)
} catch (RateLimitException $e) {
    // Too many requests (429)
} catch (ApiErrorException $e) {
    // Any other API error
    echo $e->getHttpStatus();
}

Dans une application Laravel, vous pouvez aussi traiter ces exceptions de façon globale dans votre gestionnaire d’exceptions, ou utiliser un middleware pour intercepter les erreurs de limite de débit et relancer automatiquement. Votre application reste ainsi résiliente, même lorsqu’elle envoie de gros volumes d’e-mails.

Tous les services disponibles

La Facade vous donne accès à toute l’API Emailit :

Service

Utilisation

Description

E-mails

Emailit::emails()

Envoyer, lister, récupérer, annuler et relancer des e-mails

Domaines

Emailit::domains()

Créer, vérifier, lister et gérer les domaines d’envoi

Clés API

Emailit::apiKeys()

Créer, lister et gérer les clés API

Listes de contacts

Emailit::audiences()

Créer, lister et gérer les listes de contacts

Abonnés

Emailit::subscribers()

Ajouter, lister et gérer les abonnés

Modèles

Emailit::templates()

Créer, lister et publier des modèles d’e-mails

Adresses bloquées

Emailit::suppressions()

Créer, lister et gérer les adresses bloquées

Vérifications d’e-mails

Emailit::emailVerifications()

Vérifier des adresses e-mail

Listes de vérification

Emailit::emailVerificationLists()

Vérifier des adresses en masse

Webhooks

Emailit::webhooks()

Créer, lister et gérer les webhooks

Contacts

Emailit::contacts()

Créer, lister et gérer les contacts

Événements

Emailit::events()

Lister et récupérer les événements

Pour commencer

Installez le package et commencez à envoyer en moins d’une minute :

composer require emailit/emailit-laravel

Consultez la documentation complète du package sur GitHub, le SDK PHP d’Emailit pour le client sous-jacent, ou la référence de l’API pour le détail de chaque endpoint.

Partager

Essayez ce que vous venez de lire.

3 000 e-⁠mails gratuits par mois. Sans carte bancaire.

3 000 e-⁠mails gratuits par mois · Sans carte bancaire