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.
config/mail.php. Changez le driver via .env.
Créer une classe Mailable
Chaque e-mail est représenté par une classe « Mailable ». Utilisezmake:mail.
app/Mail/.
Configurer un Mailable
La classe générée exposeenvelope(), content() et attachments().
Définir l’expéditeur
Utilisezenvelope().
config/mail.php, ce qui évite de le préciser dans chaque Mailable.
Définir le contenu
Danscontent(), précisez le template Blade. Les propriétés public définies dans le constructeur sont automatiquement disponibles dans le template.
resources/views/mail/orders/shipped.blade.php.
with. Les propriétés peuvent alors être protected ou private.
Envoyer un e-mail
Utilisez la façadeMail, indiquez le destinataire avec to() puis send().
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.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îneron()->queue().
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.
markdown dans content().
Écrire le template Markdown
Utilisez les composants Blade fournis par Laravel.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.