E-Mails versenden mit Laravel

Laravel wird mit hervorragender E-Mail-Unterstützung ausgeliefert, aber Sie benötigen trotzdem einen zuverlässigen Zustelldienst dahinter. Das Emailit Laravel Paket integriert sich direkt in Laravels E-Mail-System als nativer Transport. Ihre bestehenden Mailables, Notifications und Mail::send() Aufrufe funktionieren ohne jegliche Code-Änderungen. Zusätzlich erhalten Sie vollen Zugriff auf die Emailit API über eine praktische Facade.
Das Versenden von E-Mails ist eine der häufigsten Aufgaben in jeder Laravel-Anwendung. Benutzerregistrierungs-Bestätigungen, Passwort-Resets, Bestellbestätigungen, Versandaktualisierungen und Marketing-Newsletter hängen alle von zuverlässiger E-Mail-Zustellung ab. Während Laravel eine mächtige E-Mail-Abstraktionsschicht bereitstellt, hängt die tatsächliche Zustellung immer noch vom konfigurierten Transport ab. Die Verwendung einer E-Mail-API wie Emailit bietet Ihnen hohe Zustellbarkeit, Zustellverfolgung, Bounce-Management und detaillierte Analysen, ohne dass Sie SMTP-Server verwalten oder sich um die IP-Reputation sorgen müssen.
In diesem Leitfaden führen wir Sie durch die Einrichtung von Emailit in einer Laravel-Anwendung und das Versenden von E-Mails sowohl über das Standard-Laravel-E-Mail-System als auch über die Emailit Facade.
Voraussetzungen
- PHP 8.1 oder höher
- Laravel 10, 11 oder 12
- Ein Emailit-Konto mit einem API-Schlüssel
Installation
Installieren Sie das Paket über Composer:
composer require emailit/emailit-laravel
Das Paket erkennt seinen Service Provider automatisch, sodass keine manuelle Registrierung erforderlich ist. Es funktioniert mit Laravel 10, 11 und 12 sofort nach der Installation.
Konfiguration
Fügen Sie Ihren API-Schlüssel zur .env hinzu:
EMAILIT_API_KEY=ihr_api_schluessel
Setzen Sie Emailit als Standard-Mailer:
MAIL_MAILER=emailit
Fügen Sie den emailit Mailer zu Ihrem config/mail.php Mailers-Array hinzu:
'mailers' => [
// ...
'emailit' => [
'transport' => 'emailit',
],
],
Optional können Sie die Konfigurationsdatei veröffentlichen, um die API-Basis-URL anzupassen:
php artisan vendor:publish --tag=emailit-config
Die Konfiguration ist bewusst minimal gehalten. Sobald Sie Ihren API-Schlüssel und Standard-Mailer gesetzt haben, leitet Laravel automatisch alle ausgehenden E-Mails über Emailit weiter. Es ist nicht nötig, SMTP-Hosts, Ports, Verschlüsselungseinstellungen oder Authentifizierungsdaten zu konfigurieren, wie Sie es bei einer herkömmlichen Mail-Server-Einrichtung tun würden.
E-Mails versenden mit Laravel Mail
Nach der Konfiguration funktionieren alle E-Mail-Features von Laravel sofort. Nichts in Ihrem bestehenden Code muss geändert werden.
Verwendung einer Mailable-Klasse
Erstellen Sie eine Mailable-Klasse wie gewohnt:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;
public function __construct(
public readonly User $user,
) {}
public function envelope(): Envelope
{
return new Envelope(
subject: 'Willkommen in unserer App',
);
}
public function content(): Content
{
return new Content(
view: 'emails.welcome',
);
}
}
Dann versenden Sie sie:
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;
Mail::to('benutzer@example.com')->send(new WelcomeEmail($user));
Warteschlangen-E-Mails, Markdown-Mailables und Notifications funktionieren alle genau wie erwartet. Emailit sitzt transparent hinter Laravels E-Mail-Schicht, sodass Sie es für jeden bestehenden Transport wie SMTP, Mailgun oder SES einsetzen können, ohne Ihren Anwendungscode anzufassen. Das macht es einfach, Emailit neben Ihrem aktuellen Anbieter zu testen oder schrittweise zu migrieren.
Verwendung der Emailit Facade
Für Features, die über das hinausgehen, was Laravels E-Mail-System bietet, wie Templates mit Variablen, geplante Sendungen oder die Verwaltung von API-Ressourcen, verwenden Sie die Emailit Facade. Sie gibt Ihnen direkten Zugriff auf das vollständige Emailit PHP SDK.
E-Mail über die API versenden
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'hallo@ihredomain.com',
'to' => ['benutzer@example.com'],
'subject' => 'Hallo von Emailit',
'html' => '<h1>Willkommen!</h1>',
]);
echo $email->id;
echo $email->status;
Versenden mit einem Template
Referenzieren Sie Templates, die Sie im Emailit-Dashboard erstellt haben, und übergeben Sie dynamische Variablen:
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'hallo@ihredomain.com',
'to' => 'benutzer@example.com',
'template' => 'welcome_email',
'variables' => [
'name' => 'Max Mustermann',
'company' => 'Musterfirma GmbH',
],
]);
Die Verwendung serverseitiger Templates ist ein mächtiges Konzept für Laravel-Anwendungen. Ihre Designer und Marketing-Teams können E-Mail-Inhalte, Styling und Layout im Emailit-Dashboard aktualisieren, ohne Code-Änderungen oder neue Deployments zu benötigen. Der PHP-Code muss nur die Daten übergeben, und das Template übernimmt das Rendering.
E-Mail planen
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'erinnerungen@ihredomain.com',
'to' => 'benutzer@example.com',
'subject' => 'Termin-Erinnerung',
'html' => '<p>Ihr Termin ist morgen um 14:00 Uhr.</p>',
'scheduled_at' => '2026-04-10T09:00:00Z',
]);
Geplante E-Mails werden vollständig von der Emailit API verwaltet, was bedeutet, dass sie unabhängig von Ihrem Laravel-Warteschlangen-System funktionieren. Das ist ideal für Termin-Erinnerungen, Abonnement-Verlängerungshinweise und zeitkritische Kampagnen, bei denen Sie garantierte Zustellung zu einem bestimmten Zeitpunkt wollen, auch wenn Ihr Anwendungsserver Ausfallzeiten hat.
Versenden mit Anhängen
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'rechnungen@ihredomain.com',
'to' => 'kunde@example.com',
'subject' => 'Ihre Rechnung #12345',
'html' => '<p>Bitte finden Sie Ihre Rechnung im Anhang.</p>',
'attachments' => [
[
'filename' => 'rechnung.pdf',
'content' => base64_encode(file_get_contents('rechnung.pdf')),
'content_type' => 'application/pdf',
],
],
]);
Ressourcen verwalten
Die Facade stellt jeden Service der Emailit API zur Verfügung, sodass Sie Ihre gesamte E-Mail-Infrastruktur von Laravel aus verwalten können.
Domains
use Emailit\Laravel\Facades\Emailit;
$domain = Emailit::domains()->create([
'name' => 'example.com',
'track_loads' => true,
'track_clicks' => true,
]);
$domain = Emailit::domains()->verify('sd_123');
Die Verwaltung von Versand-Domains über die API ist nützlich für SaaS-Plattformen, die benutzerdefinierte Domains für jeden Kunden einrichten müssen. Sie können den gesamten Domain-Verifizierungs-Workflow, einschließlich DNS-Eintragsüberprüfungen, direkt aus Ihrer Laravel-Anwendung automatisieren.
Kontakte
use Emailit\Laravel\Facades\Emailit;
$contact = Emailit::contacts()->create([
'email' => 'benutzer@example.com',
'first_name' => 'Max',
'last_name' => 'Mustermann',
]);
$contacts = Emailit::contacts()->list();
E-Mail-Verifizierung
use Emailit\Laravel\Facades\Emailit;
$result = Emailit::emailVerifications()->verify([
'email' => 'test@example.com',
]);
echo $result->status; // valid
echo $result->risk; // low
Die Verifizierung von E-Mail-Adressen zum Zeitpunkt der Registrierung oder Formularübermittlung hilft Ihnen, eine saubere Kontaktliste zu führen und schützt Ihre Absender-Reputation. Hohe Bounce-Raten von ungültigen Adressen können dazu führen, dass Ihre E-Mails im Spam-Ordner landen, daher ist die Verifizierung eine bewährte Praxis für jede Laravel-Anwendung, die transaktionale oder Marketing-E-Mails in größerem Umfang versendet.
Dependency Injection
Wenn Sie lieber keine Facades verwenden möchten, können Sie den Client direkt injizieren:
use Emailit\EmailitClient;
class EmailController extends Controller
{
public function send(EmailitClient $emailit)
{
$email = $emailit->emails()->send([
'from' => 'hallo@ihredomain.com',
'to' => ['benutzer@example.com'],
'subject' => 'Hallo',
'html' => '<p>Hallo!</p>',
]);
return response()->json(['id' => $email->id]);
}
}
Laravels Service Container löst die EmailitClient Instanz automatisch mit dem API-Schlüssel aus Ihrer Konfiguration auf, sodass Sie die gleiche Bequemlichkeit wie bei der Facade mit den Testbarkeits-Vorteilen der Dependency Injection erhalten.
Fehlerbehandlung
Das zugrundeliegende PHP SDK wirft typisierte Exceptions, sodass Sie spezifische Fehlertypen abfangen können:
use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\ApiErrorException;
use Emailit\Laravel\Facades\Emailit;
try {
Emailit::emails()->send([...]);
} catch (AuthenticationException $e) {
// Ungültiger API-Schlüssel (401)
} catch (RateLimitException $e) {
// Zu viele Anfragen (429)
} catch (ApiErrorException $e) {
// Jeder andere API-Fehler
echo $e->getHttpStatus();
}
In einer Laravel-Anwendung können Sie diese Exceptions auch global in Ihrem Exception Handler behandeln oder Middleware verwenden, um Rate-Limit-Fehler abzufangen und automatische Wiederholungslogik zu implementieren. Das stellt sicher, dass Ihre Anwendung widerstandsfähig bleibt, auch beim Versenden großer E-Mail-Mengen.
Alle verfügbaren Services
Die Facade gibt Ihnen Zugriff auf alles in der Emailit API:
| Service | Verwendung | Beschreibung |
|---|---|---|
| Emails | Emailit::emails() | E-Mails senden, auflisten, abrufen, abbrechen, wiederholen |
| Domains | Emailit::domains() | Versand-Domains erstellen, verifizieren, auflisten, verwalten |
| API Keys | Emailit::apiKeys() | API-Schlüssel erstellen, auflisten, verwalten |
| Audiences | Emailit::audiences() | Zielgruppen erstellen, auflisten, verwalten |
| Subscribers | Emailit::subscribers() | Abonnenten hinzufügen, auflisten, verwalten |
| Templates | Emailit::templates() | E-Mail-Templates erstellen, auflisten, veröffentlichen |
| Suppressions | Emailit::suppressions() | Unterdrückte Adressen erstellen, auflisten, verwalten |
| Email Verifications | Emailit::emailVerifications() | E-Mail-Adressen verifizieren |
| Email Verification Lists | Emailit::emailVerificationLists() | Massen-E-Mail-Verifizierung |
| Webhooks | Emailit::webhooks() | Webhooks erstellen, auflisten, verwalten |
| Contacts | Emailit::contacts() | Kontakte erstellen, auflisten, verwalten |
| Events | Emailit::events() | Events auflisten und abrufen |
Loslegen
Installieren Sie das Paket und beginnen Sie in unter einer Minute mit dem Versenden:
composer require emailit/emailit-laravel
Schauen Sie sich die vollständige Paket-Dokumentation auf GitHub an, das Emailit PHP SDK für den zugrundeliegenden Client, oder gehen Sie zur API-Referenz für Details zu jedem Endpoint.
Blog
Die neuesten Nachrichten und Updates, direkt von Emailit.
Bleiben Sie auf dem Laufenden mit den neuesten Artikeln aus dem Emailit Blog.


