Skip to main content

La fonctionnalité de mail de Laravel

La fonctionnalité mail est basée sur Symfony Mailer et prend en charge SMTP, Mailgun, Postmark, Resend, Amazon SES, sendmail, etc.
SwiftMailer, utilisé dans les anciennes versions, est abandonné. Depuis Laravel 9, c’est Symfony Mailer.
La configuration se trouve dans config/mail.php. Changez le driver via .env.

Créer une classe Mailable

Chaque e-mail est représenté par une classe « Mailable ». Utilisez make:mail.
Le fichier est créé dans app/Mail/.

Configurer un Mailable

La classe générée expose envelope(), content() et attachments().

Définir l’expéditeur

Utilisez envelope().
Vous pouvez également définir un expéditeur global dans config/mail.php, ce qui évite de le préciser dans chaque Mailable.

Définir le contenu

Dans content(), précisez le template Blade. Les propriétés public définies dans le constructeur sont automatiquement disponibles dans le template.
Créez le template resources/views/mail/orders/shipped.blade.php.
Vous pouvez aussi passer explicitement les données via with. Les propriétés peuvent alors être protected ou private.

Envoyer un e-mail

Utilisez la façade Mail, indiquez le destinataire avec to() puis send().
Vous pouvez ajouter des destinataires en CC / BCC.
Pour utiliser un mailer précis :

Envoi via queue

L’envoi d’e-mails influe sur le temps de réponse. Passez par la queue pour l’envoi en arrière-plan.
Pour utiliser la queue, configurez-la et démarrez les workers au préalable.
Envoi différé :
Si la classe implémente ShouldQueue, send() la place systématiquement en queue.

Définir connexion et nom de file via attributs PHP

Les attributs PHP permettent de spécifier la connexion et le nom de file directement sur la classe, sans chaîner on()->queue().
Cela indique explicitement que ce Mailable ira toujours dans la file emails sur la connexion SQS.

Créer un e-mail Markdown

Les e-mails Markdown exploitent le beau template HTML responsive fourni par Laravel.

Générer un Mailable Markdown

Utilisez l’option --markdown.
Utilisez markdown dans content().

Écrire le template Markdown

Utilisez les composants Blade fournis par Laravel.
Composants disponibles :
Une version texte brut est aussi générée automatiquement pour les clients qui ne prennent pas en charge le HTML.

Prévisualiser les e-mails

Retournez une instance de Mailable depuis une route pour prévisualiser dans le navigateur, très utile en développement.

E-mails en développement local

Pour éviter d’envoyer des e-mails réels par erreur, utilisez un outil comme Mailpit.
Laragon et Laravel Herd incluent Mailpit par défaut.
Le driver log écrit le contenu du mail dans les logs. C’est le moyen le plus simple pour vérifier un envoi.

Récapitulatif

Dernière modification le 13 juillet 2026