Laravel 11 : envoyer ses emails avec Brevo API sans SMTP
Par Tom Jamon2 min de lecture

Lorsque l'on utilise Laravel, la méthode la plus courante pour envoyer des emails via Brevo consiste à configurer un serveur SMTP. Cependant, Brevo propose également une API transactionnelle qui offre plusieurs avantages :
- Pas de gestion SMTP
- Meilleure fiabilité
- Temps d'envoi réduits
- Gestion native des templates Brevo
- Suivi des événements (ouvertures, clics, bounces, etc.)
Dans cet article, nous allons voir comment intégrer Brevo comme transport d'emails dans Laravel 11 en utilisant l'API officielle.
Installation des dépendances
Commencez par installer le transport Brevo pour Symfony Mailer ainsi que le client HTTP requis :
composer require symfony/brevo-mailer
composer require symfony/http-client
Création de la clé API Brevo
Depuis votre interface Brevo :
- Rendez-vous dans SMTP & API
- Ouvrez l'onglet API Keys
- Créez une nouvelle clé API transactionnelle
Vous obtiendrez une clé ressemblant à :
xkeysib-xxxxxxxxxxxxxxxxxxxxxxxx
Configuration Laravel
Ajoutez votre clé API dans le fichier .env :
MAIL_MAILER=brevo
BREVO_API_KEY=xkeysib-xxxxxxxxxxxxxxxxxxxxxxxx
MAIL_FROM_ADDRESS=noreply@votredomaine.fr
MAIL_FROM_NAME="${APP_NAME}"
Puis dans config/services.php :
return [
// ...
'brevo' => [
'key' => env('BREVO_API_KEY'),
],
];
Déclaration du transport Brevo
Ajoutez un nouveau mailer dans config/mail.php :
'brevo' => [
'transport' => 'brevo',
],
Laravel ne connaît pas nativement le transport Brevo. Il faut donc l'enregistrer dans un Service Provider.
Dans AppServiceProvider.php :
use Illuminate\Support\Facades\Mail;
use Symfony\Component\Mailer\Bridge\Brevo\Transport\BrevoTransportFactory;
use Symfony\Component\Mailer\Transport\Dsn;
public function boot(): void
{
Mail::extend('brevo', function () {
return (new BrevoTransportFactory())->create(
new Dsn(
'brevo+api',
'default',
config('services.brevo.key')
)
);
});
}
Nettoyage du cache Laravel
Après modification de la configuration :
php artisan optimize:clear
Test d'envoi
Vous pouvez maintenant envoyer un email normalement :
use Illuminate\Support\Facades\Mail;
Mail::raw('Test Brevo API', function ($message) {
$message->to('contact@example.com')
->subject('Test Brevo');
});
Ou via une Mailable :
Mail::to($user)->send(new WelcomeMail());
Aucune modification supplémentaire n'est nécessaire dans votre code métier.
Erreurs courantes
Unsupported mail transport [brevo]
Le transport n'a pas été enregistré dans le AppServiceProvider ou le package symfony/brevo-mailer n'est pas installé.
User is not set
Le constructeur Dsn est mal configuré. La clé API doit être passée comme troisième argument.
You cannot use AbstractHttpTransport as the HttpClient component is not installed
Le package suivant est manquant :
composer require symfony/http-client
Conclusion
L'utilisation de Brevo via API permet de conserver toute la puissance du système de mails Laravel tout en bénéficiant des performances et fonctionnalités de l'API transactionnelle Brevo.
Une fois la configuration terminée, vos Mailables, notifications et files d'attente continuent de fonctionner exactement comme avec SMTP, sans modification du code applicatif.