[{"data":1,"prerenderedAt":34},["ShallowReactive",2],{"mfxLVziOkv":3,"YBwVQjNS6N":23},{"data":4},{"id":5,"title":6,"slug":7,"slugs":8,"summary":10,"content":11,"categories":12,"thumbnail":19,"thumbnail_small":20,"created_at":21,"updated_at":22},3,"Laravel 11 : envoyer ses emails avec Brevo API sans SMTP","envoyer-emails-laravel-11-brevo-api-sans-smtp",{"en":9,"fr":7},"laravel-11-send-emails-with-brevo-api-without-smtp","Découvrez comment intégrer Brevo à Laravel 11 via son API transactionnelle pour envoyer vos emails sans configuration SMTP tout en conservant les Mailables et Notifications Laravel.","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 :\n\n- Pas de gestion SMTP\n- Meilleure fiabilité\n- Temps d'envoi réduits\n- Gestion native des templates Brevo\n- Suivi des événements (ouvertures, clics, bounces, etc.)\n\nDans cet article, nous allons voir comment intégrer Brevo comme transport d'emails dans Laravel 11 en utilisant l'API officielle.\n\n## Installation des dépendances\n\nCommencez par installer le transport Brevo pour Symfony Mailer ainsi que le client HTTP requis :\n\n```bash\ncomposer require symfony/brevo-mailer\ncomposer require symfony/http-client\n```\n\n## Création de la clé API Brevo\n\nDepuis votre interface Brevo :\n\n1. Rendez-vous dans **SMTP & API**\n2. Ouvrez l'onglet **API Keys**\n3. Créez une nouvelle clé API transactionnelle\n\nVous obtiendrez une clé ressemblant à :\n\n```text\nxkeysib-xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n## Configuration Laravel\n\nAjoutez votre clé API dans le fichier `.env` :\n\n```env\nMAIL_MAILER=brevo\n\nBREVO_API_KEY=xkeysib-xxxxxxxxxxxxxxxxxxxxxxxx\n\nMAIL_FROM_ADDRESS=noreply@votredomaine.fr\nMAIL_FROM_NAME=\"${APP_NAME}\"\n```\n\nPuis dans `config/services.php` :\n\n```php\nreturn [\n\n    // ...\n\n    'brevo' => [\n        'key' => env('BREVO_API_KEY'),\n    ],\n\n];\n```\n\n## Déclaration du transport Brevo\n\nAjoutez un nouveau mailer dans `config/mail.php` :\n\n```php\n'brevo' => [\n    'transport' => 'brevo',\n],\n```\n\nLaravel ne connaît pas nativement le transport Brevo. Il faut donc l'enregistrer dans un Service Provider.\n\nDans `AppServiceProvider.php` :\n\n```php\nuse Illuminate\\Support\\Facades\\Mail;\nuse Symfony\\Component\\Mailer\\Bridge\\Brevo\\Transport\\BrevoTransportFactory;\nuse Symfony\\Component\\Mailer\\Transport\\Dsn;\n\npublic function boot(): void\n{\n    Mail::extend('brevo', function () {\n        return (new BrevoTransportFactory())->create(\n            new Dsn(\n                'brevo+api',\n                'default',\n                config('services.brevo.key')\n            )\n        );\n    });\n}\n```\n\n## Nettoyage du cache Laravel\n\nAprès modification de la configuration :\n\n```bash\nphp artisan optimize:clear\n```\n\n## Test d'envoi\n\nVous pouvez maintenant envoyer un email normalement :\n\n```php\nuse Illuminate\\Support\\Facades\\Mail;\n\nMail::raw('Test Brevo API', function ($message) {\n    $message->to('contact@example.com')\n        ->subject('Test Brevo');\n});\n```\n\nOu via une Mailable :\n\n```php\nMail::to($user)->send(new WelcomeMail());\n```\n\nAucune modification supplémentaire n'est nécessaire dans votre code métier.\n\n## Erreurs courantes\n\n### Unsupported mail transport [brevo]\n\nLe transport n'a pas été enregistré dans le `AppServiceProvider` ou le package `symfony/brevo-mailer` n'est pas installé.\n\n### User is not set\n\nLe constructeur `Dsn` est mal configuré. La clé API doit être passée comme troisième argument.\n\n### You cannot use AbstractHttpTransport as the HttpClient component is not installed\n\nLe package suivant est manquant :\n\n```bash\ncomposer require symfony/http-client\n```\n\n## Conclusion\n\nL'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.\n\nUne fois la configuration terminée, vos Mailables, notifications et files d'attente continuent de fonctionner exactement comme avec SMTP, sans modification du code applicatif.",[13],{"id":5,"title":14,"slug":15,"slugs":16,"thumbnail":17,"thumbnail_small":18},"Laravel","laravel",{"en":15,"fr":15},"https://app.tomjamon.com/storage/12/conversions/01JER9785TAJYWQRE60EHP67C4-cover.webp","https://app.tomjamon.com/storage/12/conversions/01JER9785TAJYWQRE60EHP67C4-card.webp","https://app.tomjamon.com/storage/15/conversions/01KT6BXVWDYSYYM25N3QKAPH7C-cover.webp","https://app.tomjamon.com/storage/15/conversions/01KT6BXVWDYSYYM25N3QKAPH7C-card.webp","2026-06-03T09:02:47.000000Z","2026-06-03T09:27:15.000000Z",{"data":24},[25,27],{"id":5,"title":14,"slug":15,"slugs":26,"thumbnail":17,"thumbnail_small":18},{"en":15,"fr":15},{"id":28,"title":29,"slug":30,"slugs":31,"thumbnail":32,"thumbnail_small":33},6,"Nuxt JS","nuxt-js",{"en":30,"fr":30},"https://app.tomjamon.com/storage/10/conversions/01JER91M3YJXF7EHZR75J054MT-cover.webp","https://app.tomjamon.com/storage/10/conversions/01JER91M3YJXF7EHZR75J054MT-card.webp",1792846768163]