Documentatie voor ontwikkelaars
E-mail versturen via SMTP
Laat elke SMTP-app via Banger versturen, van Supabase Auth en WordPress tot de mailer van je framework. Een Banger API-sleutel is het wachtwoord; elk bericht wordt vanaf je eigen domein bezorgd en verschijnt in Logs.
Instellingen
| Host | submit.bangermail.com |
|---|---|
| Poort | 465 met TLS vanaf het begin, of 587 met STARTTLS. Blokkeert je netwerk die, gebruik dan 2465 (TLS) of 2587 (STARTTLS); poort 25 ondersteunt ook STARTTLS. |
| Gebruikersnaam | banger. Elke waarde werkt: alleen de API-sleutel bepaalt je werkruimte. |
| Wachtwoord | Een Banger API-sleutel met de scope mail:send. |
| Versleuteling | TLS 1.2 of nieuwer. Inloggen wordt pas aangeboden nadat TLS is gestart, zodat een sleutel nooit als platte tekst over het netwerk gaat. |
| Authenticatie | PLAIN of LOGIN. |
Voordat je begint
- Maak een API-sleutel. Open Instellingen → Ontwikkelaars → API-sleutels beheren in de Banger-app, kies API-sleutel maken, selecteer
mail:senden kopieer de sleutel: deze wordt één keer getoond. De pagina toont deze SMTP-instellingen naast je sleutels. - Verstuur via een Product-kanaal. Het From-adres moet op een hostnaam met een actief Product-kanaal staan: het kanaal voor bonnen, meldingen en andere e-mail uit je app. Kies Kanaal toevoegen en daarna Product in Domeinen, en voeg de vermelde DNS-records toe. Een Mail-kanaal (de mailboxen van je team) of Campagne-kanaal vervoert geen app-e-mail, zodat die de inboxreputatie van je team niet kan beïnvloeden.
Voorbeeld: Supabase Auth
Open Authentication → Emails → SMTP Settings in je Supabase-project en schakel aangepaste SMTP in:
| Afzender-e-mail | Een adres op je Product-kanaal, zoals noreply@app.example.com |
|---|---|
| Afzendernaam | De naam van je product. Banger bezorgt die zoals geschreven. |
| Host | submit.bangermail.com |
| Poort | 465 |
| Gebruikersnaam | banger |
| Wachtwoord | Je API-sleutel |
Sla op en stuur een magic link vanuit Authentication → Users om te controleren of die aankomt.
Voorbeeld: 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>",
}); Om vanuit een terminal met swaks te testen:
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 Wat er met elk bericht gebeurt
- Banger bezorgt het bericht zoals je app het schreef, met je From-naam, ondertekend met de DKIM-sleutel van je domein en verstuurd vanaf het bounce-domein van je Product-kanaal.
- Verwijdert
Bcc,Return-Pathen de eigen Banger-headers, en voegt bij ontbreken eenReply-Totoe die het From-adres vermeldt. - Elke ontvanger wordt gecontroleerd bij
RCPT TO: een geblokkeerd adres wordt afzonderlijk geweigerd en de overige krijgen het bericht. - Een bericht mag maximaal 10 MiB en maximaal 50 ontvangers hebben.
- Een
Idempotency-Key-header maakt een herhaalpoging tot dezelfde verzending. Zonder die wordt een herhaling met hetzelfde bericht en dezelfde ontvangers nog steeds herkend. - Elk bericht verschijnt in Logs met SMTP als bron en telt mee voor je abonnement zoals elke andere verzending.
Responses en fouten
Een weigering vermeldt de oorzaak en bevat een referentie, (ref …), die overeenkomt met de vermelding in Logs. Codes die met 4 beginnen zijn tijdelijk: je app kan later opnieuw proberen.
| Response | Betekenis |
|---|---|
535 5.7.8 | Het wachtwoord is geen geldige Banger API-sleutel, de sleutel is ingetrokken of mist mail:send. |
421 4.7.0 | Drie mislukte logins op één verbinding: die wordt gesloten. Controleer de sleutel voordat je opnieuw probeert. |
454 4.7.0 | Te veel mislukte logins vanaf je netwerk in het afgelopen uur. Probeer later opnieuw. |
550 5.7.1 | De From-hostnaam heeft geen verzendklaar Product-kanaal (de response vermeldt wat ontbreekt), een ontvanger is geblokkeerd of het versturen is gepauzeerd wegens reputatie. |
553 5.1.3 | Een ontvangeradres is ongeldig. |
552 5.3.4 | Het bericht is groter dan 10 MiB. |
554 5.6.0 | Het bericht is onjuist gevormd, bijvoorbeeld een herhaalde From- of Subject-header of een From met meer dan één adres. |
451 4.7.0 | Het verzendquotum of de daglimiet van de werkruimte is opgebruikt. Die wordt vernieuwd bij de volgende factureringsperiode of dag, of meteen bij een abonnementsupgrade. |
451 4.3.0 | Banger kon het bericht nu niet aannemen. Probeer opnieuw. |
Beveiliging
- Banger bewaart alleen een hash van elke sleutel. Trek een sleutel in of roteer die in API-sleutels beheren; SMTP-clients die deze gebruiken worden bij hun volgende login geweigerd.
- Geef SMTP een eigen sleutel met alleen
mail:send, zodat een gelekt wachtwoord je werkruimte niet kan lezen. - Mislukte logins worden beperkt per clientnetwerk en per sleutel; een geweigerde login met één van je sleutels wordt vastgelegd in Logs.
Liever HTTP? Hetzelfde versturen is beschikbaar via de Banger API.