Envoi d'e-mails avec Laravel

Laravel est livré avec un excellent support de messagerie prêt à l'emploi, mais vous avez toujours besoin d'un service de livraison fiable derrière. Le package Emailit Laravel se connecte directement au système de messagerie de Laravel en tant que transport natif. Vos Mailables, Notifications et appels Mail::send() existants fonctionnent sans aucune modification de code. En plus de cela, vous obtenez un accès complet à l'API Emailit via une Facade pratique.
L'envoi d'e-mails est l'une des tâches les plus courantes dans toute application Laravel. Les confirmations d'inscription utilisateur, les réinitialisations de mot de passe, les reçus de commande, les mises à jour d'expédition et les newsletters marketing dépendent tous d'une livraison d'e-mails fiable. Bien que Laravel fournisse une couche d'abstraction de messagerie puissante, la livraison réelle dépend toujours du transport que vous configurez. L'utilisation d'une API d'e-mail comme Emailit vous offre une haute délivrabilité, un suivi de livraison, une gestion des rebonds et des analyses détaillées, sans avoir à gérer des serveurs SMTP ou vous soucier de la réputation IP.
Dans ce guide, nous allons parcourir la configuration d'Emailit dans une application Laravel et l'envoi d'e-mails en utilisant à la fois le système de messagerie standard de Laravel et 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 via Composer :
composer require emailit/emailit-laravel
Le package découvre automatiquement son fournisseur de services, aucune inscription manuelle n'est donc nécessaire. Il fonctionne avec Laravel 10, 11 et 12 dès l'installation.
Configuration
Ajoutez votre clé API à .env :
EMAILIT_API_KEY=votre_cle_api
Définissez Emailit comme votre mailer par défaut :
MAIL_MAILER=emailit
Ajoutez le mailer emailit à votre tableau de mailers dans config/mail.php :
'mailers' => [
// ...
'emailit' => [
'transport' => 'emailit',
],
],
Optionnellement, publiez le fichier de configuration pour personnaliser l'URL de base de l'API :
php artisan vendor:publish --tag=emailit-config
La configuration est intentionnellement minimale. Une fois que vous avez défini votre clé API et votre mailer par défaut, Laravel acheminera automatiquement tous les e-mails sortants via Emailit. Il n'est pas nécessaire de configurer les hôtes SMTP, les ports, les paramètres de chiffrement ou les identifiants d'authentification comme vous le feriez avec une configuration de serveur de messagerie traditionnelle.
Envoi d'e-mails avec Laravel Mail
Une fois configuré, toutes les fonctionnalités de messagerie de Laravel fonctionnent immédiatement. Rien dans votre code existant n'a besoin de changer.
Utilisation d'un Mailable
Créez une classe Mailable comme vous le feriez normalement :
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: 'Bienvenue dans notre application',
);
}
public function content(): Content
{
return new Content(
view: 'emails.welcome',
);
}
}
Puis envoyez-le :
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;
Mail::to('utilisateur@exemple.com')->send(new WelcomeEmail($user));
Les e-mails en file d'attente, les Mailables Markdown et les Notifications fonctionnent exactement comme vous vous y attendez. Emailit se place de manière transparente derrière la couche de messagerie de Laravel, vous pouvez donc l'échanger contre n'importe quel transport existant comme SMTP, Mailgun ou SES sans toucher au code de votre application. Cela facilite le test d'Emailit aux côtés de votre fournisseur actuel ou la migration progressive.
Utilisation de la Facade Emailit
Pour les fonctionnalités qui vont au-delà de ce qu'offre le système de messagerie de Laravel, comme les modèles avec variables, les envois programmés ou la gestion des ressources API, utilisez la Facade Emailit. Elle vous donne un accès direct au SDK PHP Emailit complet.
Envoyer un e-mail via l'API
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'bonjour@votredomaine.com',
'to' => ['utilisateur@exemple.com'],
'subject' => 'Bonjour depuis Emailit',
'html' => '<h1>Bienvenue !</h1>',
]);
echo $email->id;
echo $email->status;
Envoyer avec un modèle
Référencez les modèles que vous avez créés dans le tableau de bord Emailit et transmettez des variables dynamiques :
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'bonjour@votredomaine.com',
'to' => 'utilisateur@exemple.com',
'template' => 'email_bienvenue',
'variables' => [
'nom' => 'Jean Dupont',
'entreprise' => 'Acme Inc',
],
]);
L'utilisation de modèles côté serveur est un modèle puissant pour les applications Laravel. Vos designers et marketeurs peuvent mettre à jour le contenu, le style et la mise en page des e-mails dans le tableau de bord Emailit sans nécessiter de modifications de code ou de nouveaux déploiements. Le code PHP n'a qu'à transmettre les données, et le modèle gère le rendu.
Programmer un e-mail
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'rappels@votredomaine.com',
'to' => 'utilisateur@exemple.com',
'subject' => 'Rappel de rendez-vous',
'html' => '<p>Votre rendez-vous est demain à 14h.</p>',
'scheduled_at' => '2026-04-10T09:00:00Z',
]);
Les e-mails programmés sont entièrement gérés par l'API Emailit, ce qui signifie qu'ils fonctionnent indépendamment de votre système de files d'attente Laravel. C'est idéal pour les rappels de rendez-vous, les avis de renouvellement d'abonnement et les campagnes urgentes où vous voulez une livraison garantie à un moment précis, même si votre serveur d'application subit une panne.
Envoyer avec des pièces jointes
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'factures@votredomaine.com',
'to' => 'client@exemple.com',
'subject' => 'Votre facture #12345',
'html' => '<p>Veuillez trouver votre facture en pièce jointe.</p>',
'attachments' => [
[
'filename' => 'facture.pdf',
'content' => base64_encode(file_get_contents('facture.pdf')),
'content_type' => 'application/pdf',
],
],
]);
Gestion des ressources
La Facade expose tous les services de l'API Emailit, vous pouvez donc gérer toute votre infrastructure d'e-mail depuis Laravel.
Domaines
use Emailit\Laravel\Facades\Emailit;
$domain = Emailit::domains()->create([
'name' => 'exemple.com',
'track_loads' => true,
'track_clicks' => true,
]);
$domain = Emailit::domains()->verify('sd_123');
La gestion des domaines d'envoi via l'API est utile pour les plateformes SaaS qui doivent configurer des domaines personnalisés pour chaque client. Vous pouvez automatiser l'ensemble du processus de vérification de domaine, y compris les vérifications d'enregistrements DNS, directement depuis votre application Laravel.
Contacts
use Emailit\Laravel\Facades\Emailit;
$contact = Emailit::contacts()->create([
'email' => 'utilisateur@exemple.com',
'first_name' => 'Jean',
'last_name' => 'Dupont',
]);
$contacts = Emailit::contacts()->list();
Vérification d'e-mail
use Emailit\Laravel\Facades\Emailit;
$result = Emailit::emailVerifications()->verify([
'email' => 'test@exemple.com',
]);
echo $result->status; // valid
echo $result->risk; // low
La vérification des adresses e-mail au moment de l'inscription ou de la soumission de formulaire vous aide à maintenir une liste de contacts propre et protège votre réputation d'expéditeur. Des taux de rebond élevés provenant d'adresses invalides peuvent faire atterrir vos e-mails dans les dossiers de spam, 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épendance
Si vous préférez ne pas utiliser les Facades, vous pouvez injecter le client directement :
use Emailit\EmailitClient;
class EmailController extends Controller
{
public function send(EmailitClient $emailit)
{
$email = $emailit->emails()->send([
'from' => 'bonjour@votredomaine.com',
'to' => ['utilisateur@exemple.com'],
'subject' => 'Bonjour',
'html' => '<p>Salut !</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 obtenez donc la même commodité que la Facade avec les avantages de testabilité de l'injection de dépendance.
Gestion des erreurs
Le SDK PHP sous-jacent lance des exceptions typées, vous pouvez donc capturer des types d'erreur spécifiques :
use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\ApiErrorException;
use Emailit\Laravel\Facades\Emailit;
try {
Emailit::emails()->send([...]);
} catch (AuthenticationException $e) {
// Clé API invalide (401)
} catch (RateLimitException $e) {
// Trop de requêtes (429)
} catch (ApiErrorException $e) {
// Toute autre erreur API
echo $e->getHttpStatus();
}
Dans une application Laravel, vous pouvez également gérer ces exceptions globalement dans votre gestionnaire d'exceptions ou utiliser un middleware pour capturer les erreurs de limite de taux et implémenter une logique de nouvelle tentative automatique. Cela garantit que votre application reste résiliente même lors de l'envoi de gros volumes d'e-mails.
Tous les services disponibles
La Facade vous donne accès à tout dans l'API Emailit :
| Service | Utilisation | Description |
|---|---|---|
| E-mails | Emailit::emails() | Envoyer, lister, obtenir, annuler, réessayer des e-mails |
| Domaines | Emailit::domains() | Créer, vérifier, lister, gérer les domaines d'envoi |
| Clés API | Emailit::apiKeys() | Créer, lister, gérer les clés API |
| Audiences | Emailit::audiences() | Créer, lister, gérer les audiences |
| Abonnés | Emailit::subscribers() | Ajouter, lister, gérer les abonnés |
| Modèles | Emailit::templates() | Créer, lister, publier des modèles d'e-mail |
| Suppressions | Emailit::suppressions() | Créer, lister, gérer les adresses supprimées |
| Vérifications d'e-mail | Emailit::emailVerifications() | Vérifier les adresses e-mail |
| Listes de vérification d'e-mail | Emailit::emailVerificationLists() | Vérification d'e-mail en lot |
| Webhooks | Emailit::webhooks() | Créer, lister, gérer les webhooks |
| Contacts | Emailit::contacts() | Créer, lister, gérer les contacts |
| Événements | Emailit::events() | Lister et récupérer les événements |
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 Emailit pour le client sous-jacent, ou rendez-vous à la Référence API pour les détails sur chaque endpoint.
Blog
Les dernières actualités et mises à jour, directement depuis Emailit.
Restez informé des derniers articles du Blog Emailit.


