개발자 문서
SMTP로 이메일 보내기
Supabase Auth, WordPress, 프레임워크 메일러까지 모든 SMTP 앱을 Banger에 연결하세요. Banger API 키가 비밀번호이며 모든 메시지는 내 도메인에서 전달되고 로그에 표시돼요.
설정
| 호스트 | submit.bangermail.com |
|---|---|
| 포트 | 처음부터 TLS를 사용하는 465 또는 STARTTLS의 587을 사용하세요. 네트워크가 차단하면 2465(TLS) 또는 2587(STARTTLS)를 사용하세요. 포트 25도 STARTTLS를 받아요. |
| 사용자 이름 | banger. 모든 값이 작동하며 API 키만으로 워크스페이스를 식별해요. |
| 비밀번호 | mail:send 범위가 있는 Banger API 키. |
| 암호화 | TLS 1.2 이상이에요. 로그인은 TLS 시작 후에만 제공되므로 키는 네트워크를 평문으로 통과하지 않아요. |
| 인증 | PLAIN 또는 LOGIN. |
시작 전
- API 키를 만드세요. Banger 앱에서 설정 → 개발자 → API 키 관리를 열고 API 키 만들기과
mail:send를 선택한 뒤 키를 복사하세요. 한 번만 표시돼요. 페이지는 키 옆에 이 SMTP 설정을 표시해요. - 제품 레인에서 보내세요. From 주소는 영수증, 알림 및 앱의 다른 이메일용 활성 제품 레인이 있는 호스트 이름에 있어야 해요. 도메인에서 레인 추가와 제품을 선택하고 표시된 DNS 레코드를 추가하세요. 메일 레인(팀 메일함)이나 단체 발송 레인은 앱 이메일을 처리하지 않으므로 앱 메일은 팀 받은편지함 평판에 영향을 줄 수 없어요.
예제: Supabase Auth
Supabase 프로젝트에서 인증 → 이메일 → SMTP 설정을 열고 사용자 지정 SMTP를 켜세요:
| 보낸 사람 이메일 | noreply@app.example.com 같은 제품 레인의 주소 |
|---|---|
| 보낸 사람 이름 | 제품 이름이에요. Banger는 작성된 그대로 전달해요. |
| 호스트 | submit.bangermail.com |
| 포트 | 465 |
| 사용자 이름 | banger |
| 비밀번호 | API 키 |
저장한 뒤 인증 → 사용자에서 매직 링크를 보내 도착하는지 확인하세요.
예제: 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>",
}); 터미널에서 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 각 메시지에 일어나는 일
- Banger는 앱이 작성한 그대로 From 이름을 유지하고 도메인 DKIM 키로 서명해 제품 레인의 바운스 도메인에서 메시지를 전달해요.
Bcc,Return-Path, Banger 자체 헤더를 제거하고 없으면 From 주소를 지정하는Reply-To를 추가해요.- 각 수신자는
RCPT TO에서 확인하며 억제된 주소만 거부하고 나머지는 발송해요. - 메시지는 최대 10 MiB이며 수신자는 최대 50명이에요.
Idempotency-Key헤더는 재시도를 같은 발송으로 만들어요. 없어도 같은 메시지와 수신자의 재시도는 인식돼요.- 모든 메시지는 SMTP를 소스로 로그에 표시되며 다른 발송처럼 요금제 사용량에 포함돼요.
응답과 오류
거부는 원인과 로그 항목에 일치하는 참조 (ref …)을 포함해요. 4로 시작하는 코드는 일시적이며 앱이 나중에 재시도할 수 있어요.
| 응답 | 의미 |
|---|---|
535 5.7.8 | 비밀번호가 유효한 Banger API 키가 아니거나 키가 취소됐거나 mail:send이 없어요. |
421 4.7.0 | 연결 하나에서 로그인 3번 실패 시 닫혀요. 재시도 전에 키를 확인하세요. |
454 4.7.0 | 지난 한 시간 동안 네트워크에서 로그인 실패가 너무 많아요. 나중에 다시 시도하세요. |
550 5.7.1 | From 호스트 이름에 발송 준비된 제품 레인이 없거나(응답에 부족한 내용 표시) 수신자가 억제됐거나 평판 때문에 발송이 일시 중지됐어요. |
553 5.1.3 | 수신자 주소가 유효하지 않아요. |
552 5.3.4 | 메시지가 10 MiB보다 커요. |
554 5.6.0 | 메시지 형식이 잘못됐어요. 예: 반복된 From 또는 Subject 헤더, 주소가 여러 개인 From. |
451 4.7.0 | 워크스페이스 발송 허용량 또는 일일 한도를 다 썼어요. 다음 청구 기간이나 다음 날 갱신되거나 요금제 업그레이드로 지금 갱신돼요. |
451 4.3.0 | Banger가 지금 메시지를 받을 수 없어요. 다시 시도하세요. |
보안
- Banger는 각 키의 해시만 저장해요. API 키 관리에서 키를 취소하거나 교체하면 이를 사용하는 SMTP 클라이언트는 다음 로그인에 거부돼요.
- SMTP에
mail:send만 있는 전용 키를 제공하면 유출된 비밀번호로 워크스페이스를 읽을 수 없어요. - 로그인 실패는 클라이언트 네트워크별 및 키별로 제한되며 내 키로 거부된 로그인은 로그에 기록돼요.
HTTP를 선호하시나요? 같은 발송을 Banger API으로 사용할 수 있어요.