Artikel

Symfony: E-Mails versenden über Brevo (ehemals Sendinblue)

Allgemein

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

1. SMTP-Zugang bei Brevo anlegen

  1. Melde dich bei Brevo an.
  2. Navigiere zu SMTP & API > SMTP.
  3. Erzeuge einen neuen SMTP-Schlüssel.
  4. 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:

  1. Brevo-Dashboard: Senders > Add a sender
  2. Gib z. B. no-reply@deinedomain.de oder eine bestehende Adresse wie deinname@web.de an.
  3. 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_DSN korrekt 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