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.
GParGeorge

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-laravelLe 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_keyDéfinissez Emailit comme mailer par défaut :
MAIL_MAILER=emailitAjoutez 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-configLa 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; // lowVé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 |
| Envoyer, lister, récupérer, annuler et relancer des e-mails |
Domaines |
| Créer, vérifier, lister et gérer les domaines d’envoi |
Clés API |
| Créer, lister et gérer les clés API |
Listes de contacts |
| Créer, lister et gérer les listes de contacts |
Abonnés |
| Ajouter, lister et gérer les abonnés |
Modèles |
| Créer, lister et publier des modèles d’e-mails |
Adresses bloquées |
| Créer, lister et gérer les adresses bloquées |
Vérifications d’e-mails |
| Vérifier des adresses e-mail |
Listes de vérification |
| Vérifier des adresses en masse |
Webhooks |
| Créer, lister et gérer les webhooks |
Contacts |
| Créer, lister et gérer les contacts |
Événements |
| 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-laravelConsultez 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.


