Documentation développeur
Envoyer des e-mails via SMTP
Dirigez toute application compatible SMTP vers Banger, de Supabase Auth à WordPress ou au module mail de votre framework. Une clé API Banger sert de mot de passe ; chaque message est livré depuis votre domaine et apparaît dans Journaux.
Paramètres
| Hôte | submit.bangermail.com |
|---|---|
| Port | 465 avec TLS dès le début, ou 587 avec STARTTLS. Si votre réseau les bloque, utilisez 2465 (TLS) ou 2587 (STARTTLS) ; le port 25 accepte aussi STARTTLS. |
| Nom d’utilisateur | banger. Toute valeur fonctionne : la clé API seule identifie votre espace de travail. |
| Mot de passe | Une clé API Banger avec la portée mail:send. |
| Chiffrement | TLS 1.2 ou ultérieur. La connexion n’est proposée qu’après le démarrage de TLS : une clé ne traverse donc jamais le réseau en clair. |
| Authentification | PLAIN ou LOGIN. |
Avant de commencer
- Créez une clé API. Dans l’application Banger, ouvrez Paramètres → Développeurs → Gérer les clés API, choisissez Créer une clé API, sélectionnez
mail:sendet copiez la clé : elle n’est affichée qu’une fois. La page affiche ces paramètres SMTP à côté de vos clés. - Envoyez depuis un canal Produit. L’adresse From doit être sur un nom d’hôte avec un canal Produit actif, celui des reçus, alertes et autres e-mails de votre application. Dans Domaines, choisissez Ajouter un canal, puis Produit, et ajoutez les enregistrements DNS indiqués. Un canal Mail (boîtes mail de votre équipe) ou Campagne ne transporte pas les e-mails d’application : ceux-ci ne peuvent donc pas affecter la réputation de la boîte de réception de votre équipe.
Exemple : Supabase Auth
Dans votre projet Supabase, ouvrez Authentication → Emails → SMTP Settings et activez le SMTP personnalisé :
| E-mail de l’expéditeur | Une adresse sur votre canal Produit, comme noreply@app.example.com |
|---|---|
| Nom de l’expéditeur | Le nom de votre produit. Banger le livre tel qu’écrit. |
| Hôte | submit.bangermail.com |
| Port | 465 |
| Nom d’utilisateur | banger |
| Mot de passe | Votre clé API |
Enregistrez, puis envoyez un lien magique depuis Authentication → Users pour vérifier sa réception.
Exemple : 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>",
}); Pour tester depuis un terminal avec 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 Ce qui se passe pour chaque message
- Banger livre le message tel que votre application l’a écrit, avec votre nom From, signé par la clé DKIM de votre domaine et envoyé depuis le domaine de rebond de votre canal Produit.
- Retire
Bcc,Return-Pathet les en-têtes propres à Banger, et ajoute unReply-Toindiquant l’adresse From lorsqu’il n’y en a pas. - Chaque destinataire est vérifié à
RCPT TO: une adresse exclue est refusée individuellement et les autres reçoivent l’envoi. - Un message peut atteindre 10 MiB avec jusqu’à 50 destinataires.
- Un en-tête
Idempotency-Keyfait d’une nouvelle tentative le même envoi. Sans lui, une répétition du même message et des mêmes destinataires est quand même reconnue. - Chaque message apparaît dans Journaux avec SMTP comme source et compte dans votre forfait comme tout autre envoi.
Réponses et erreurs
Un refus indique sa cause et porte une référence, (ref …), correspondant à l’entrée dans Journaux. Les codes commençant par 4 sont temporaires : votre application peut réessayer plus tard.
| Réponse | Signification |
|---|---|
535 5.7.8 | Le mot de passe n’est pas une clé API Banger valide, la clé est révoquée ou il lui manque mail:send. |
421 4.7.0 | Trois connexions échouées sur une même connexion : elle se ferme. Vérifiez la clé avant de réessayer. |
454 4.7.0 | Trop de connexions échouées depuis votre réseau dans la dernière heure. Réessayez plus tard. |
550 5.7.1 | Le nom d’hôte From n’a pas de canal Produit prêt à envoyer (la réponse précise ce qui manque), un destinataire est exclu ou l’envoi est en pause pour réputation. |
553 5.1.3 | Une adresse de destinataire n’est pas valide. |
552 5.3.4 | Le message dépasse 10 MiB. |
554 5.6.0 | Le message est mal formé, par exemple un en-tête From ou Subject répété, ou un From avec plusieurs adresses. |
451 4.7.0 | Le quota d’envoi ou la limite quotidienne de l’espace de travail est épuisé. Il se renouvelle à la prochaine période de facturation ou au prochain jour, ou maintenant avec un forfait supérieur. |
451 4.3.0 | Banger n’a pas pu accepter le message maintenant. Réessayez. |
Sécurité
- Banger ne stocke qu’un hash de chaque clé. Révoquez ou renouvelez une clé dans Gérer les clés API ; les clients SMTP l’utilisant seront refusés à leur prochaine connexion.
- Donnez à SMTP sa propre clé avec uniquement
mail:send, pour qu’un mot de passe divulgué ne puisse pas lire votre espace de travail. - Les connexions échouées sont limitées par réseau client et par clé, et une connexion refusée avec l’une de vos clés est consignée dans Journaux.
Vous préférez HTTP ? Le même envoi est disponible via l’API Banger.