비교
트랜잭션 이메일을 위한 SendGrid 대안
SpacePost는 Amazon SES 기반의 트랜잭션 이메일 API이며 EU 기업이 운영합니다. 앱이 SendGrid로 영수증, 비밀번호 재설정, 알림을 보내고 있다면 각 부분을 옮기는 방법과 SendGrid가 여전히 더 많이 제공하는 부분을 여기서 확인할 수 있습니다.
이 페이지는 트랜잭션 이메일을 다룹니다. SpacePost에는 오디언스와 간단한 브로드캐스트가 있지만 SendGrid Marketing Campaigns(자동화, 가입 양식, A/B 테스트, 비주얼 편집기)를 대체하지는 않습니다.
SendGrid 개념과의 대응
| 항목 | SendGrid | SpacePost |
|---|---|---|
| 발송 API | v3 Mail Send: personalizations(요청당 최대 1,000개)가 포함된 POST /v3/mail/send, 202 Accepted 응답 | POST /emails(to, cc, bcc가 있는 메시지 1개) 또는 POST /emails/batch(최대 100개), 이메일 ID로 응답 |
| SMTP | smtp.sendgrid.net, 포트 25, 587, 2525(TLS) 또는 465(SSL), 사용자 이름 apikey | smtp.spacepost.dev, 포트 25976(STARTTLS), 사용자 이름 spacepost, 비밀번호는 API 키 |
| 템플릿 | SendGrid에 저장되는 다이내믹 템플릿(ID는 d-로 시작), Handlebars, dynamic_template_data로 값 채움 | 아직 호스팅 템플릿이 없습니다. 앱에서 HTML을 렌더링하고(예: React Email) html과 text를 보냅니다 |
| 수신 거부 목록 | 바운스, 차단, 스팸 신고, 잘못된 주소, 수신 거부 그룹 | 팀마다 수신 거부 목록 1개: 하드 바운스, 불만 신고, 반복된 소프트 바운스는 자동으로 추가되며 직접 추가하려면 POST /suppressions를 사용합니다 |
| 이벤트 웹훅 | Event Webhook: 이벤트의 JSON 배열(processed, delivered, deferred, bounce, dropped, open, click, spam report, unsubscribe), 서명 버전도 있음 | 이벤트 유형별 웹훅(email.sent, delivered, delivery_delayed, bounced, complained, opened, clicked, failed, suppressed), 요청당 이벤트 1개, Standard Webhooks 서명 |
| EU | 글로벌 API와 EU 리전 하위 사용자용 EU 호스트(api.eu.sendgrid.com) | EU 기업 Studio 404 d.o.o.가 운영하며 AWS eu-central-1(프랑크푸르트)에서 발송하고 데이터를 EU에 저장합니다 |
| 마케팅 이메일 | Marketing Campaigns: 연락처, 세그먼트, 자동화, 가입 양식 | 원클릭 수신 거부가 있는 오디언스, 연락처, 브로드캐스트. 자동화와 비주얼 편집기는 없습니다 |
이전 방법
01
키와 도메인
SpacePost API 키를 만들고 발송 도메인을 인증합니다(DKIM CNAME 3개와 MAIL FROM 레코드). 전환할 때까지 SendGrid의 DNS 레코드는 그대로 둡니다.
02
발송 호출
personalization 하나가 POST /emails 호출 하나가 됩니다. to, cc, bcc, subject, html 또는 text, reply_to, base64 첨부 파일, 사용자 지정 헤더는 그대로 옮겨집니다. 최대 100개 메시지를 한 번에 보내려면 POST /emails/batch를 사용합니다.
03
또는 SMTP만
호스트를 smtp.spacepost.dev, 포트를 25976(STARTTLS), 사용자 이름을 spacepost, 비밀번호를 API 키로 바꿉니다.
04
템플릿
발송 전에 코드에서 다이내믹 템플릿을 렌더링합니다. Handlebars 소스는 어떤 Handlebars 라이브러리로도 재사용할 수 있습니다.
05
수신 거부 목록
SendGrid에서 바운스, 차단, 스팸 신고, 수신 거부를 내보낸 뒤 POST /suppressions로 각 주소를 추가하면 다시는 발송되지 않습니다.
06
웹훅
사용하는 이벤트에 대한 웹훅을 만들고 SendGrid 이벤트 이름을 SpacePost 이름에 맞춥니다. 서명은 Standard Webhooks를 따르므로 Svix 호환 라이브러리로 검증할 수 있습니다.
같은 메시지의 이전 전후
// SendGrid v3 Mail Send
await fetch("https://api.sendgrid.com/v3/mail/send", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.SENDGRID_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
personalizations: [{ to: [{ email: "ada@example.com" }] }],
from: { email: "receipts@acme.com", name: "Acme" },
subject: "Your receipt",
content: [{ type: "text/html", value: html }],
}),
});// SpacePost (Resend-compatible API)
const res = await fetch("https://api.spacepost.dev/emails", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.SPACEPOST_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
from: "Acme <receipts@acme.com>",
to: ["ada@example.com"],
subject: "Your receipt",
html,
}),
});
const { id } = await res.json();SendGrid가 더 많이 제공하는 부분
- 디자인 편집기가 있는 호스팅 다이내믹 템플릿, 그리고 자동화와 가입 양식을 갖춘 Marketing Campaigns.
- 이메일 수신용 Inbound Parse. SpacePost는 아직 제공하지 않습니다.
- 매우 큰 발송량에서의 오랜 운영 경험과, 하위 사용자와 리전에 트래픽을 나누는 더 많은 방법.
SendGrid 정보는 2026년 10월 29일 기준 twilio.com/docs/sendgrid(Mail Send API, SMTP 연동, Event Webhook)에서 가져왔습니다. 변경될 수 있으니 오래된 내용이 있으면 support@spacepost.dev로 알려 주세요.
SpacePost는 독립 제품이며 Twilio 또는 SendGrid와 제휴하거나 보증을 받지 않았습니다. "SendGrid"와 "Twilio"는 각 소유자의 상표입니다.
