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

# E-Mail-Verifizierung (Email Verification)

> Anleitung zur Implementierung der E-Mail-Verifizierung in Laravel. Sie lernen Modellvorbereitung, die drei Routendefinitionen, die verified-Middleware, Anpassung und Events.

## Einführung

Die E-Mail-Verifizierung (Email Verification) ist ein Mechanismus, um zu bestätigen, dass Ihre Nutzer die von ihnen registrierte E-Mail-Adresse tatsächlich besitzen. Laravel liefert das Versenden der Bestätigungs-E-Mail und deren Prüfung standardmäßig mit, sodass Sie mit minimalem Aufwand einen sicheren Verifizierungs-Flow aufbauen können.

<Info>
  Wenn Sie ein Starter Kit verwenden, sind Authentifizierungs-Screens und der E-Mail-Verifizierungs-Flow bereits integriert. Bei einer manuellen Implementierung definieren Sie Modell, Routen und Views nach den Schritten dieser Seite selbst.
</Info>

## Vorbereitung von Modell und Datenbank

### MustVerifyEmail implementieren

Stellen Sie sicher, dass `App\Models\User` das Interface `Illuminate\Contracts\Auth\MustVerifyEmail` implementiert.

```php theme={null}
<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;
}
```

Sobald Sie dieses Interface hinzufügen, wird an neu registrierte Benutzer automatisch eine Bestätigungs-E-Mail versendet. Wenn Sie die Registrierung ohne Starter Kit selbst implementieren, feuern Sie nach erfolgreicher Registrierung das Event `Registered` ab.

```php theme={null}
use Illuminate\Auth\Events\Registered;

event(new Registered($user));
```

### Spalte email\_verified\_at prüfen

Die Tabelle `users` benötigt eine Spalte `email_verified_at`. Diese ist in der Regel bereits in der Standard-Migration `0001_01_01_000000_create_users_table.php` enthalten.

## Routing (drei Routen)

Für die E-Mail-Verifizierung definieren Sie drei Routen: `verification.notice`, `verification.verify` und `verification.send`.

<Steps>
  <Step title="Route für den Verifizierungshinweis definieren (verification.notice)">
    Zeigt nicht verifizierten Benutzern den Bildschirm „Bitte prüfen Sie Ihre E-Mail".

    ```php theme={null}
    Route::get('/email/verify', function () {
        return view('auth.verify-email');
    })->middleware('auth')->name('verification.notice');
    ```
  </Step>

  <Step title="Route für den Verifizierungs-Handler definieren (verification.verify)">
    Verifiziert die signierte URL, wenn der Benutzer auf den Link in der E-Mail klickt, und schließt die Bestätigung ab.

    ```php theme={null}
    use Illuminate\Foundation\Auth\EmailVerificationRequest;

    Route::get('/email/verify/{id}/{hash}', function (EmailVerificationRequest $request) {
        $request->fulfill();

        return redirect('/home');
    })->middleware(['auth', 'signed'])->name('verification.verify');
    ```
  </Step>

  <Step title="Route für erneutes Versenden definieren (verification.send)">
    Sendet die Bestätigungs-E-Mail erneut, wenn der Nutzer sie verloren hat.

    ```php theme={null}
    use Illuminate\Http\Request;

    Route::post('/email/verification-notification', function (Request $request) {
        $request->user()->sendEmailVerificationNotification();

        return back()->with('message', 'Verification link sent!');
    })->middleware(['auth', 'throttle:6,1'])->name('verification.send');
    ```
  </Step>
</Steps>

## Routen schützen

Um den Zugriff nur verifizierten Benutzern zu erlauben, verwenden Sie die Middleware `verified`. In der Regel kombinieren Sie sie mit `auth`.

```php theme={null}
Route::get('/profile', function () {
    // Nur für verifizierte Benutzer erreichbar
})->middleware(['auth', 'verified']);
```

Wenn ein nicht verifizierter Benutzer darauf zugreift, leitet Laravel automatisch auf `verification.notice` weiter.

## Anpassung

Um den Text der Bestätigungs-E-Mail anzupassen, konfigurieren Sie `VerifyEmail::toMailUsing` in der `boot`-Methode Ihres `AppServiceProvider`.

```php theme={null}
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;

public function boot(): void
{
    VerifyEmail::toMailUsing(function (object $notifiable, string $url) {
        return (new MailMessage)
            ->subject('Verify Email Address')
            ->line('Click the button below to verify your email address.')
            ->action('Verify Email Address', $url);
    });
}
```

## Events

Bei der E-Mail-Verifizierung wird das Event `Illuminate\Auth\Events\Verified` ausgelöst. In Starter Kits wird es automatisch behandelt; bei einer manuellen Implementierung ergänzen Sie die Event-Behandlung nach Bedarf.


## Related topics

- [Verifizierung (Verify)](/de/packages/laravel-bluesky/verify.md)
- [E-Mail-Versand](/de/mail.md)
- [Starter Kits](/de/starter-kits.md)
- [Laravel Chisel – Post-Install-Skript-Bibliothek für Starterkits](/de/blog/chisel-introduction.md)
- [Laravel Fortify und Starter-Kits](/de/advanced/fortify.md)
