> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lekalao.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transport Laravel

> Faire passer les e-mails d'une application Laravel par Lekalao, sans toucher à son code.

Votre application Laravel garde ses `Mailable` et ses `Mail::to(...)->send(...)`. Le transport les remet à l'API transactionnelle de Lekalao, qui les envoie avec le fournisseur choisi et les garde dans son journal : livraisons, rebonds, ouvertures, clics.

## Installer

Le paquet `lekalao/laravel-transport` est livré avec Lekalao, dans `packages/laravel-transport`. Laravel 11, 12 ou 13, PHP 8.2 ou plus.

Depuis l'application qui envoie, déclarez le dépôt puis installez :

```json composer.json theme={null}
{
    "repositories": [
        { "type": "path", "url": "../lekalao/packages/laravel-transport" }
    ],
    "require": {
        "lekalao/laravel-transport": "*"
    }
}
```

```bash theme={null}
composer update lekalao/laravel-transport
```

Le fournisseur de services est découvert tout seul. Si l'application est sur une autre machine, copiez le dossier dans le dépôt de l'application ou publiez-le sur votre dépôt Composer privé.

## Configurer

Créez un jeton **Lecture et écriture** dans Lekalao, puis dans `config/mail.php` :

```php config/mail.php theme={null}
'mailers' => [
    // …
    'lekalao' => [
        'transport' => 'lekalao-api',
        'endpoint' => env('LEKALAO_URL'),   // https://lekalao.example.com
        'token' => env('LEKALAO_TOKEN'),
    ],
],
```

```bash .env theme={null}
MAIL_MAILER=lekalao
LEKALAO_URL=https://lekalao.example.com
LEKALAO_TOKEN=12|kJ3v8mQ2xP9…
```

<Note>
  La clé s'appelle `endpoint`, pas `url` : Laravel lit la clé `url` d'un
  mailer comme une adresse de connexion SMTP.
</Note>

Pour n'utiliser Lekalao que pour certains e-mails, laissez votre `MAIL_MAILER` et choisissez au cas par cas :

```php theme={null}
Mail::mailer('lekalao')->to($order->customer)->send(new OrderConfirmed($order));
```

## Ce qui passe

| Élément             |                                                          |
| ------------------- | -------------------------------------------------------- |
| Destinataires       | `to`, `cc`, `bcc`.                                       |
| Objet               | Tel quel.                                                |
| Corps               | Le HTML. Un message texte seul est affiché tel qu'écrit. |
| Expéditeur, réponse | Tels quels. L'expéditeur doit être autorisé par Lekalao. |
| Pièces jointes      | Toutes.                                                  |

L'identifiant de l'e-mail dans Lekalao devient le `Message-ID` du message envoyé, ce qui permet de le retrouver dans le journal.

### Choisir le fournisseur d'envoi

Ajoutez l'en-tête `X-Lekalao-Mailer` avec le nom d'un fournisseur configuré dans Lekalao :

```php theme={null}
public function headers(): Headers
{
    return new Headers(text: ['X-Lekalao-Mailer' => 'Postmark transactionnel']);
}
```

## Erreurs

Un refus de Lekalao (expéditeur non autorisé, jeton révoqué, fournisseur en échec) remonte comme une `Symfony\Component\Mailer\Exception\TransportException` qui porte le code HTTP et la raison. Envoyez vos e-mails **en file** (`ShouldQueue`) pour que Laravel réessaie tout seul.

Le délai d'attente est de 15 secondes.
