Entwicklerdokumentation
E-Mails über SMTP senden
Richte jede SMTP-fähige App auf Banger aus, von Supabase Auth über WordPress bis zum Mailer deines Frameworks. Ein Banger-API-Schlüssel ist das Passwort, und jede Nachricht wird von deiner Domain zugestellt und erscheint in Protokolle.
Einstellungen
| Host | submit.bangermail.com |
|---|---|
| Port | 465 mit TLS von Anfang an oder 587 mit STARTTLS. Wenn dein Netzwerk diese blockiert, nutze 2465 (TLS) oder 2587 (STARTTLS); Port 25 akzeptiert ebenfalls STARTTLS. |
| Benutzername | banger. Jeder Wert funktioniert: Allein der API-Schlüssel identifiziert deinen Workspace. |
| Passwort | Ein Banger-API-Schlüssel mit der Berechtigung mail:send. |
| Verschlüsselung | TLS 1.2 oder neuer. Anmeldung wird erst nach TLS-Start angeboten, sodass ein Schlüssel niemals im Klartext über das Netzwerk geht. |
| Authentifizierung | PLAIN oder LOGIN. |
Bevor du beginnst
- Erstelle einen API-Schlüssel. Öffne in der Banger-App den Bereich Einstellungen → Entwickler → API-Schlüssel verwalten, wähle API-Schlüssel erstellen, dann
mail:sendund kopiere den Schlüssel: Er wird nur einmal angezeigt. Die Seite zeigt diese SMTP-Einstellungen neben deinen Schlüsseln. - Sende über einen Produktkanal. Die From-Adresse muss auf einem Hostnamen mit aktivem Produktkanal liegen, dem Kanal für Belege, Warnungen und andere E-Mails deiner App. Wähle in Domains zuerst Kanal hinzufügen, dann Produkt und ergänze die aufgeführten DNS-Einträge. Ein Mail-Kanal (Team-Postfächer) oder Kampagnenkanal transportiert keine App-E-Mails, sodass deine App die Posteingangsreputation deines Teams nicht beeinflussen kann.
Beispiel: Supabase Auth
Öffne in deinem Supabase-Projekt Authentication → Emails → SMTP Settings und aktiviere eigenes SMTP:
| Absender-E-Mail | Eine Adresse auf deinem Produktkanal, etwa noreply@app.example.com |
|---|---|
| Absendername | Der Name deines Produkts. Banger stellt ihn wie geschrieben zu. |
| Host | submit.bangermail.com |
| Port | 465 |
| Benutzername | banger |
| Passwort | Dein API-Schlüssel |
Speichere und sende dann einen Magic Link aus Authentication → Users, um die Ankunft zu prüfen.
Beispiel: Node.js
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: "submit.bangermail.com",
port: 465,
secure: true,
auth: { user: "banger", pass: process.env.BANGER_API_KEY },
});
await transport.sendMail({
from: "Acme <noreply@app.example.com>",
to: "person@example.com",
subject: "Your receipt",
html: "<p>Thanks for your order.</p>",
}); Zum Testen im Terminal mit swaks:
swaks --server submit.bangermail.com:465 --tls-on-connect \
--auth PLAIN --auth-user banger --auth-password "$BANGER_API_KEY" \
--from noreply@app.example.com --to you@example.com Was mit jeder Nachricht geschieht
- Banger stellt die Nachricht wie von deiner App verfasst zu, mit deinem From-Namen, signiert mit dem DKIM-Schlüssel deiner Domain und gesendet von der Bounce-Domain deines Produktkanals.
- Entfernt
Bcc,Return-Pathund Bangers eigene Header und fügt einReply-Tomit der From-Adresse hinzu, wenn keines vorhanden ist. - Jeder Empfänger wird bei
RCPT TOgeprüft: Eine gesperrte Adresse wird einzeln abgelehnt, die anderen werden angeschrieben. - Eine Nachricht darf bis zu 10 MiB und bis zu 50 Empfänger haben.
- Ein
Idempotency-Key-Header macht eine Wiederholung zur selben Sendung. Ohne ihn wird eine Wiederholung derselben Nachricht und Empfänger ebenfalls erkannt. - Jede Nachricht erscheint in Protokolle mit SMTP als Quelle und zählt wie jeder andere Versand zu deinem Tarif.
Antworten und Fehler
Eine Ablehnung nennt die Ursache und enthält eine Referenz, (ref …), die zum Eintrag in Protokolle passt. Mit 4 beginnende Codes sind vorübergehend: Deine App kann es später erneut versuchen.
| Antwort | Bedeutung |
|---|---|
535 5.7.8 | Das Passwort ist kein gültiger Banger-API-Schlüssel, der Schlüssel wurde widerrufen oder ihm fehlt mail:send. |
421 4.7.0 | Drei fehlgeschlagene Anmeldungen in einer Verbindung: Sie wird geschlossen. Prüfe den Schlüssel vor einem erneuten Versuch. |
454 4.7.0 | Zu viele fehlgeschlagene Anmeldungen aus deinem Netzwerk in der letzten Stunde. Versuche es später erneut. |
550 5.7.1 | Der From-Hostname hat keinen versandbereiten Produktkanal (die Antwort nennt Fehlendes), ein Empfänger ist gesperrt oder der Versand ist wegen Reputation pausiert. |
553 5.1.3 | Eine Empfängeradresse ist ungültig. |
552 5.3.4 | Die Nachricht ist größer als 10 MiB. |
554 5.6.0 | Die Nachricht ist fehlerhaft, etwa mit wiederholtem From- oder Subject-Header oder einem From mit mehreren Adressen. |
451 4.7.0 | Das Versandkontingent oder Tageslimit des Workspace ist aufgebraucht. Es erneuert sich im nächsten Abrechnungszeitraum oder am nächsten Tag oder jetzt durch ein Tarifupgrade. |
451 4.3.0 | Banger konnte die Nachricht gerade nicht annehmen. Versuche es erneut. |
Sicherheit
- Banger speichert nur einen Hash jedes Schlüssels. Widerrufe oder rotiere einen Schlüssel in API-Schlüssel verwalten; SMTP-Clients damit werden bei der nächsten Anmeldung abgelehnt.
- Gib SMTP einen eigenen Schlüssel mit nur
mail:send, damit ein geleaktes Passwort deinen Workspace nicht lesen kann. - Fehlgeschlagene Anmeldungen werden pro Clientnetzwerk und Schlüssel begrenzt; eine abgelehnte Anmeldung mit einem deiner Schlüssel wird in Protokolle erfasst.
Bevorzugst du HTTP? Derselbe Versand ist über die Banger-API verfügbar.