1. Integrations-SMTP (`outboundMail`)

Zuletzt aktualisiert: Aug 31, 2026Abschnitt: Integrationen

Ausgehend (SMTP)

Mailoo versendet E-Mails über drei verschiedene Ebenen. Jede Ebene hat eigene Zugangsdaten, Sicherheitsgrenzen und vorgesehene Empfänger.

::: {.contents local="" depth="2"} :::

1. Integrations-SMTP (outboundMail)

Was: SMTP-Einstellungen, die auf einer bestimmten Integration unter integration.config.outboundMail gespeichert sind (Dashboard: Connection & settingsOutbound email (SMTP)).

Wer erhält die E-Mails: Endbenutzer und Geschäftsabläufe für diese Integration, beispielsweise:

  • Dashboard Create reply auf eingehende Nachrichten (FORM / CONTACT_FORM).
  • Optionale Willkommensmail nach einer neuen Formularanmeldung, wenn eine ON_EVENT / SUBSCRIBER_CREATED-Kampagne konfiguriert ist.
  • Transaktionaler Einzelempfängerversand: Server-zu-Server POST …/webhooks/transactional/…/send (Berechtigung transactional.send) -- siehe transactional-email{.interpreted-text role="doc"}.
  • Markt-E-Mail-Checkout: Bestätigungsmail an den Käufer nach POST …/market/…/orders (dasselbe outboundMail wie die Markt-Integration, der der Katalog gehört).

API: Nur-Eigentümer-Bearer-Routen zum Patchen der Integrationskonfiguration / outboundMail und zum Testen des SMTP:

POST /api/v1/projects/{projectUid}/integrations/{integrationId}/outbound-mail/test

Unterstützte Integrationstypen für dieses Panel und diese Testroute: FORM, CONTACT_FORM und MARKET.

Sicherheit: SMTP-Passwörter werden verschlüsselt gespeichert (API-Umgebungsvariable MAIL_SMTP_ENCRYPTION_KEY). Die API gibt weder Chiffretext noch Klartext an Clients zurück; Antworten können lediglich hasSmtpPassword enthalten.

Kein Fallback: Wenn Integrations-SMTP fehlt, ungültig ist oder der Versand fehlschlägt, ersetzt Mailoo nicht den globalen Mailer. Dashboard Create reply gibt einen Fehler zurück, wenn SMTP nicht konfiguriert ist; Willkommensmails werden übersprungen und protokolliert, wenn SMTP nicht verfügbar ist; Marktbestellungen geben emailToCustomer.status: NOT_CONFIGURED zurück, wenn outboundMail nicht gesetzt ist.

Erforderlich auf dem API-Host zum Verschlüsseln der SMTP-Passwörter: MAIL_SMTP_ENCRYPTION_KEY.

2. Angebotsgenerator-SMTP (getrennt von outboundMail)

Was: Pro-Angebotsgenerator-Maileinstellungen in OfferGeneratorMailSettings (nicht integration.config.outboundMail).

Wer erhält die E-Mails: Assistenten-Absender (Kundenlieferung) und optionale interne Benachrichtigungs-Adresse, die am Generator konfiguriert ist.

Warum getrennt: Der Angebotsgenerator kann anderes Branding, andere Relay-Limits oder andere Operatoren verwenden als der Rest der Markt-Integration.

Diese Version führt Angebotsgenerator-SMTP nicht mit Integrations-outboundMail zusammen.

3. Globales / Plattform-SMTP (GLOBAL_SMTP_*, GLOBAL_MAIL_FROM)

Was: Umgebungsvariablen ausschließlich auf dem API-Host.

Vorgesehene Verwendung: Reserviert für Betreiber-/Plattform-Benachrichtigungen (Abrechnung, Sicherheitswarnungen, Compliance, zukünftige Systemmail). Nicht für Abonnenten-E-Mails, Markt-Käuferbestätigungen oder Angebotsgenerator-Zustellung verwendet.

Aktuelles Produktverhalten: Keine benutzerseitige Funktion hängt in dieser Version vom globalen SMTP ab; konfigurieren Sie es, wenn Sie E-Mails auf Plattformebene einführen.

Kein Fallback: Globales SMTP wird niemals ersetzt, wenn Integrations-SMTP fehlschlägt.

Externe ausgehende E-Mails (Integrator-Websites)

Unterstützt: Server- oder BFF-Aufrufe an Mailoo-APIs, die eine ausgehende Nachricht innerhalb der Integration erstellen und Mailoo über outboundMail versenden lassen. Beispiele:

  • Transaktionsversand --- POST …/webhooks/transactional/…/send (Berechtigung transactional.send): speichert Message, TransactionalSend, Abonnenten-Sync, Tracking, optionale Delivery-Webhooks. Siehe transactional-email{.interpreted-text role="doc"}.
  • Marktbestellung erstellen --- Käuferbestätigung nach POST …/market/…/orders.

Nicht unterstützt: Mailoo als zustandsloses SMTP-Relay oder stillen Versand ohne Mailoo-Nachrichtendatensätze behandeln:

  • Betten Sie outboundMail-SMTP-Host/Benutzer/Passwort nicht in Integrator-Code oder öffentliche Browser-Bundles ein.
  • Erwarten Sie keine „Sende diese rohe MIME sofort"-API ohne Message- / Abonnenten- / Abmelde-Lifecycle.

Integratoren, die volle Kontrolle über die Zustellungsinfrastruktur benötigen, sollten ihren eigenen Mailer im Backend verwenden. Mailoo's externer Weg ist immer Mailoo-seitige Verarbeitung auslösen (Prüfprotokolle, Einwilligung, Idempotenz), nicht Zugangsdaten-Export.

Dashboard-Test-E-Mail

Unter Connection & settingsOutbound email (SMTP) verwenden Sie Send test email, um die aktuellen Feldwerte zu prüfen (Sie müssen vorher nicht speichern). Mailoo sendet eine Nachricht an Ihre Mailoo-Konto-E-Mail (den angemeldeten Benutzer). Durch den Test allein wird nichts gespeichert; das Speichern erfolgt weiterhin über Save SMTP settings.

From-Adresse-Format (erforderlich): eine einfache E-Mail (news@yourdomain.com) oder Anzeigename plus Adresse in spitzen Klammern (Newsletter <news@yourdomain.com>). Ein reiner Anzeigename (z. B. Consolieri Team) wird beim Speichern und Testen mit 400 abgelehnt -- ohne addr-spec lehnen viele Empfänger (einschließlich Gmail) mit From header is missing ab.

Grüner Test ≠ Posteingang: HTTP 200 / UI-Erfolg bedeutet, dass die SMTP-Übermittlung die Nachricht akzeptiert hat. Dies garantiert nicht, dass der entfernte MTA in das Empfänger-Postfach zugestellt hat. Asynchrone Bounces nach der Annahme werden in der Testantwort nicht angezeigt.

Eine erfolgreiche Test-JSON-Antwort enthält sentTo sowie, wenn verfügbar, messageId und smtpResponse.

Wenn auf dem API-Host MAIL_SMTP_ENCRYPTION_KEY fehlt und Sie ein neues SMTP-Passwort im Formular eingeben, geben Speichern und Testen 503 mit einer klaren Konfigurationsmeldung zurück -- setzen Sie den Schlüssel auf der API (gleicher Wert auf jedem Replikat), z. B. openssl rand -base64 32.

Eigentümer-API (optional)

Wie der Dashboard-Test: POST /api/v1/projects/{projectUid}/integrations/{integrationId}/outbound-mail/test mit Bearer-Authentifizierung; der Body { "outboundMail": { … } } entspricht der Form des PATCH-outboundMail-Feldes.