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ôtesubmit.bangermail.com
Port465 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’utilisateurbanger. Toute valeur fonctionne : la clé API seule identifie votre espace de travail.
Mot de passeUne clé API Banger avec la portée mail:send.
ChiffrementTLS 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.
AuthentificationPLAIN ou LOGIN.

Avant de commencer

  1. 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:send et copiez la clé : elle n’est affichée qu’une fois. La page affiche ces paramètres SMTP à côté de vos clés.
  2. 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éditeurUne adresse sur votre canal Produit, comme noreply@app.example.com
Nom de l’expéditeurLe nom de votre produit. Banger le livre tel qu’écrit.
Hôtesubmit.bangermail.com
Port465
Nom d’utilisateurbanger
Mot de passeVotre 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-Path et les en-têtes propres à Banger, et ajoute un Reply-To indiquant 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-Key fait 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éponseSignification
535 5.7.8Le 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.0Trois connexions échouées sur une même connexion : elle se ferme. Vérifiez la clé avant de réessayer.
454 4.7.0Trop de connexions échouées depuis votre réseau dans la dernière heure. Réessayez plus tard.
550 5.7.1Le 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.3Une adresse de destinataire n’est pas valide.
552 5.3.4Le message dépasse 10 MiB.
554 5.6.0Le 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.0Le 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.0Banger 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.