Wat ga je maken?

Een werkend contactformulier: bezoeker vult naam, e-mail en bericht in, jij krijgt een nette e-mail binnen.

Waarom is dit nuttig?

Bijna elke klantopdracht heeft een contactformulier. En je hebt mail nodig voor wachtwoord-resets (opdracht 6) en bevestigingsmails (opdracht 9).

Stappenplan

  1. Zet je mail-instellingen in .env. Begin met MAIL_MAILER=log: je "verzendt" dan naar storage/logs/laravel.log. Snel en zonder gedoe.
  2. Maak een Mailable aan en bekijk wat er in app/Mail/ verschijnt.
  3. Maak een Blade-view voor de inhoud van de mail, of gebruik een markdown-mail voor een kant-en-klare nette opmaak.
  4. Bouw het formulier + een route + een controller met validatie. Valideer altijd op de server, ook al heb je required in je HTML staan.
  5. Verstuur met de Mailfacade en stuur de gebruiker terug met een succesmelding.
  6. Stap over naar Mailtrap (gratis account) om te zien hoe de mail er écht uitziet.

Kleine hulpmiddelen

php artisan make:mail ContactMessage --markdown=mail.contact
// In je controller
$data = $request->validate([
    'name'    => ['required', 'string', 'max:100'],
    'email'   => ['required', 'email'],
    'message' => ['required', 'string', 'min:10'],
]);

Mail::to('[email protected]')->send(new ContactMessage($data));

return back()->with('success', 'Bedankt, je bericht is verstuurd!');
{{-- Foutmeldingen tonen bij een veld --}}
<input name="email" value="{{ old('email') }}">
@error('email') <p class="text-red-600">{{ $message }}</p> @enderror

{{-- Succesmelding --}}
@if (session('success')) <p>{{ session('success') }}</p> @endif

Valkuilen