Symfony: E-Mails versenden über Brevo (ehemals Sendinblue)
Wenn du Symfony in einer Entwicklungs- oder Produktionsumgebung betreibst und einen zuverlässigen SMTP-Anbieter für den Mailversand suchst, ist Brevo (früher Sendinblue) eine gute Wahl. Dieser Artikel zeigt dir Schritt für Schritt, wie du Brevo in dein Symfony-Projekt integrierst – einfach, zuverlässig und auch ohne eigene Domain.
Voraussetzungen
- Symfony 5.4 oder höher
- Composer installiert
- Ein kostenloses Konto bei https://www.brevo.com
1. SMTP-Zugang bei Brevo anlegen
- Melde dich bei Brevo an.
- Navigiere zu SMTP & API > SMTP.
- Erzeuge einen neuen SMTP-Schlüssel.
- Notiere dir die Zugangsdaten:
- SMTP-Server:
smtp-relay.brevo.com - Port:
587 - Login: z. B.
abc123@smtp-brevo.com - Passwort: dein generierter SMTP-Key
2. Symfony konfigurieren
Bearbeite deine .env.local oder config/secrets/prod/Mailer.php und setze:
MAILER_DSN=smtp://DEIN_LOGIN:DEIN_PASSWORT@smtp-relay.brevo.com:587
Beispiel:
MAILER_DSN=smtp://abc123@smtp-brevo.com:dein-smtp-key@smtp-relay.brevo.com:587
3. Absenderadresse registrieren
Damit E-Mails erfolgreich zugestellt werden, muss der Absender bei Brevo freigeschaltet sein:
- Brevo-Dashboard: Senders > Add a sender
- Gib z. B.
no-reply@deinedomain.deoder eine bestehende Adresse wiedeinname@web.dean. - Bestätige die E-Mail.
Hinweis: Du brauchst keine eigene Domain. Auch GMX/Web.de-Adressen funktionieren, solange sie bestätigt sind.
4. Beispiel-Controller in Symfony
Erstelle einen API-Endpunkt, um den Versand zu testen:
<?php
// src/Controller/Api/ApiTestMailController.php
namespace App\Controller\Api;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\HttpFoundation\Response;
class ApiTestMailController extends AbstractController
{
#[Route('/api/testmail', name: 'api_testmail', methods: ['GET'])]
public function testMail(MailerInterface $mailer): JsonResponse
{
try {
$email = (new Email())
->from('no-reply@deineadresse.de')
->to('zieladresse@gmail.com')
->subject('Testmail über Brevo')
->text('Dies ist der Textkörper.')
->html('<p><strong>HTML:</strong> Testmail über Brevo</p>');
$mailer->send($email);
return new JsonResponse(['status' => 'ok']);
} catch (\Throwable $e) {
return new JsonResponse([
'status' => 'error',
'message' => $e->getMessage(),
], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
}
5. Aufrufen und testen
Starte Symfony oder deinen Container und rufe im Browser auf:
https://deinserver/api/testmail
Im Idealfall bekommst du:
{ "status": "ok" }
Die Mail sollte wenige Sekunden später im Posteingang erscheinen.
6. Fehleranalyse
Falls Mails nicht ankommen:
- Prüfe im Brevo-Dashboard unter Transactional > Logs, ob die Mail versendet wurde.
- Achte auf richtige SMTP-Zugangsdaten.
- Stelle sicher, dass
MAILER_DSNkorrekt gesetzt ist. - Überprüfe, ob die
from-Adresse bestätigt ist.
Fazit
Der Versand von E-Mails über Brevo lässt sich in Symfony in wenigen Minuten einrichten – auch ohne eigene Domain. Der Dienst eignet sich für Entwicklungs-, Test- und Produktivumgebungen gleichermaßen und erlaubt dir später ein einfaches Upgrade auf größere Volumen mit Tracking, Statistiken und Bounce-Handling.
0 Kommentare