Documentação para desenvolvedores
Enviar e-mail por SMTP
Aponte qualquer app que use SMTP para o Banger, de Supabase Auth a WordPress e ao mailer do seu framework. Uma chave de API do Banger é a senha, e cada mensagem é entregue do seu domínio e aparece em Logs.
Configurações
| Host | submit.bangermail.com |
|---|---|
| Porta | 465 com TLS desde o início, ou 587 com STARTTLS. Se sua rede bloquear esses, use 2465 (TLS) ou 2587 (STARTTLS); a porta 25 também aceita STARTTLS. |
| Nome de usuário | banger. Qualquer valor funciona: só a chave de API identifica seu espaço de trabalho. |
| Senha | Uma chave de API do Banger com o escopo mail:send. |
| Criptografia | TLS 1.2 ou mais recente. O login só é oferecido após iniciar TLS, então uma chave nunca atravessa a rede em texto simples. |
| Autenticação | PLAIN ou LOGIN. |
Antes de começar
- Crie uma chave de API. Em o app do Banger, abra Configurações → Desenvolvedores → Gerenciar chaves de API, escolha Criar chave de API, selecione
mail:sende copie a chave: ela aparece uma única vez. A página mostra essas configurações SMTP ao lado das chaves. - Envie de um canal de Produto. O endereço From deve estar em um hostname com canal de Produto ativo, o canal para recibos, alertas e outros e-mails do seu app. Em Domínios, escolha Adicionar canal, depois Produto, e adicione os registros DNS listados. Um canal de E-mail (as caixas da equipe) ou de Disparo não transporta e-mail de app, então o e-mail do seu app não pode afetar a reputação da caixa de entrada da equipe.
Exemplo: Supabase Auth
No seu projeto Supabase, abra Authentication → Emails → SMTP Settings e ative SMTP personalizado:
| E-mail do remetente | Um endereço no seu canal de Produto, como noreply@app.example.com |
|---|---|
| Nome do remetente | O nome do seu produto. O Banger o entrega como escrito. |
| Host | submit.bangermail.com |
| Porta | 465 |
| Nome de usuário | banger |
| Senha | Sua chave de API |
Salve, depois envie um link mágico de Authentication → Users para verificar se chega.
Exemplo: 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>",
}); Para testar de um terminal com 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 O que acontece com cada mensagem
- O Banger entrega a mensagem como seu app a escreveu, com seu nome From, assinada com a chave DKIM do seu domínio e enviada pelo domínio de retorno do seu canal de Produto.
- Remove
Bcc,Return-Pathe os cabeçalhos próprios do Banger, e adicionaReply-Toindicando o endereço From quando não existe. - Cada destinatário é verificado em
RCPT TO: um endereço suprimido é recusado individualmente e os outros recebem. - Uma mensagem pode ter até 10 MiB e até 50 destinatários.
- Um cabeçalho
Idempotency-Keytorna uma nova tentativa o mesmo envio. Sem ele, uma repetição da mesma mensagem e destinatários ainda é reconhecida. - Cada mensagem aparece em Logs com SMTP como fonte e conta no seu plano como qualquer outro envio.
Respostas e erros
Uma recusa informa sua causa e traz uma referência, (ref …), que corresponde à entrada em Logs. Códigos que começam com 4 são temporários: seu app pode tentar novamente depois.
| Resposta | Significado |
|---|---|
535 5.7.8 | A senha não é uma chave de API válida do Banger, a chave foi revogada ou falta mail:send. |
421 4.7.0 | Três logins falhos em uma conexão: ela fecha. Verifique a chave antes de tentar novamente. |
454 4.7.0 | Muitos logins falhos da sua rede na última hora. Tente novamente depois. |
550 5.7.1 | O hostname From não tem canal de Produto pronto para enviar (a resposta informa o que falta), um destinatário está suprimido ou o envio está pausado por reputação. |
553 5.1.3 | Um endereço de destinatário não é válido. |
552 5.3.4 | A mensagem é maior que 10 MiB. |
554 5.6.0 | A mensagem está malformada, por exemplo um cabeçalho From ou Subject repetido, ou From com mais de um endereço. |
451 4.7.0 | A cota de envio ou limite diário do espaço de trabalho acabou. Renova no próximo período de cobrança ou dia, ou agora com upgrade de plano. |
451 4.3.0 | O Banger não pôde aceitar a mensagem agora. Tente novamente. |
Segurança
- O Banger armazena apenas um hash de cada chave. Revogue ou rotacione uma chave em Gerenciar chaves de API; clientes SMTP que a usam são recusados no próximo login.
- Dê ao SMTP uma chave própria com apenas
mail:send, para que uma senha vazada não possa ler seu espaço de trabalho. - Logins falhos são limitados por rede do cliente e por chave, e um login recusado com uma das suas chaves é registrado em Logs.
Prefere HTTP? O mesmo envio está disponível pela API do Banger.