Skip to main content

Wat is de mailfunctionaliteit van Laravel

De mailfunctionaliteit van Laravel is gebouwd op Symfony Mailer en ondersteunt drivers als SMTP, Mailgun, Postmark, Resend, Amazon SES en sendmail.
SwiftMailer, dat in oudere versies van Laravel werd gebruikt, is uitgefaseerd. Vanaf Laravel 9 wordt Symfony Mailer gebruikt.
De mailconfiguratie beheer je in config/mail.php. In het .env-bestand wissel je van driver.

Een Mailable-klasse aanmaken

In Laravel wordt elke e-mail die de applicatie verstuurt weergegeven als een “Mailable”-klasse. Je genereert de klasse met het Artisan-commando make:mail.
De gegenereerde klasse wordt geplaatst in de directory app/Mail/.

De Mailable configureren

De gegenereerde Mailable-klasse heeft drie methoden: envelope(), content() en attachments().

De afzender instellen

In de methode envelope() geef je de afzender op.
Stel je in config/mail.php een globaal afzenderadres in, dan kun je de opgave in individuele Mailables achterwege laten.

De mailinhoud instellen

In de methode content() geef je de Blade-template op. Data die je in de constructor aan public-properties toewijst, is automatisch beschikbaar in de template.
Maak de bijbehorende Blade-template aan (resources/views/mail/orders/shipped.blade.php).
Je kunt data ook expliciet doorgeven via de parameter with. In dat geval maak je de properties protected of private.

E-mail versturen

Met de methode to() van de Mail-facade geef je de ontvanger op en met send() verstuur je de e-mail.
Je kunt ook CC en BCC opgeven.
Om via een specifieke mailer te versturen gebruik je de methode mailer().

E-mail versturen via de queue

Omdat het versturen van e-mail de responstijd beïnvloedt, wordt aanbevolen om via de queue op de achtergrond te versturen.
Om de queue te gebruiken moet je vooraf de queue configureren en een worker starten.
Vertraagd versturen kan ook.
Implementeert de Mailable-klasse ShouldQueue, dan gaat de e-mail altijd de queue in, ook als je send() aanroept.

De queueverbinding en queuenaam opgeven met PHP-attributen

Met PHP-attributen geef je de queueverbinding en queuenaam direct op de Mailable-klasse op. In plaats van de methodchain on()->queue() kun je dit declaratief op klasseniveau instellen.
Op deze manier maak je in de klassedefinitie expliciet dat deze Mailable altijd naar de emails-queue van de SQS-verbinding wordt gestuurd.

Markdown-mails maken

Met e-mails in Markdown-formaat profiteer je van de fraaie, responsive HTML-templates die Laravel meelevert.

Een Markdown-Mailable genereren

Genereer de Mailable met de optie --markdown.
In de methode content() gebruik je de parameter markdown.

De Markdown-template schrijven

Je stelt de mailinhoud samen met de Blade-componenten die Laravel meelevert.
De beschikbare componenten zijn als volgt.
Van Markdown-mails wordt automatisch ook een platte-tekstversie gegenereerd. Zo zijn ze ook leesbaar in mailclients die geen HTML-mail ondersteunen.

E-mails previewen

Geef je in een route een Mailable-instantie terug, dan kun je de e-mail in de browser previewen. Handig om te controleren tijdens de ontwikkeling.

E-mail tijdens lokale ontwikkeling

Om te voorkomen dat je per ongeluk e-mails in productie verstuurt, is het handig om bij lokale ontwikkeling tools als Mailpit te gebruiken.
In Laragon en Laravel Herd is Mailpit standaard inbegrepen.
Met de log-driver wordt de inhoud van e-mails vastgelegd in het logbestand. Wil je alleen controleren dat er e-mail wordt verstuurd, dan is dit de eenvoudigste methode.

Samenvatting

Laatst gewijzigd op 6 september 2026