빠른 시작
이 가이드는 아무것도 없는 상태에서 내 도메인으로 실제 이메일을 보내기까지의 과정을 안내합니다.
-
API 키 만들기
대시보드를 열고 API 키로 이동해 API 키 만들기를 클릭합니다. 시험해 보는 동안에는
full_access를 선택하세요. 키는 바로 복사해 두어야 합니다.sp_live_로 시작하며 한 번만 표시됩니다.터미널 창 export SPACEPOST_API_KEY="sp_live_YOUR_API_KEY" -
테스트 이메일 보내기
도메인 없이도 공용 테스트 발신자
onboarding@test.spacepost.dev로 바로 보낼 수 있습니다. 이 발신자는 내 팀 멤버의 이메일 주소와delivered@test.spacepost.dev같은 테스트 주소로만 전달할 수 있습니다.터미널 창 npm install @spacepost/nodesend.ts import { SpacePost } from "@spacepost/node";const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);const { data, error } = await spacepost.emails.send({from: "Acme <onboarding@test.spacepost.dev>",to: ["delivered@test.spacepost.dev"],subject: "Hello from SpacePost",html: "<strong>It works!</strong>",});if (error) {console.error(error); // { statusCode, name, message }} else {console.log("Sent", data.id);}터미널 창 curl -X POST https://api.spacepost.dev/emails \-H "Authorization: Bearer $SPACEPOST_API_KEY" \-H "Content-Type: application/json" \-d '{"from": "Acme <onboarding@test.spacepost.dev>","to": ["delivered@test.spacepost.dev"],"subject": "Hello from SpacePost","html": "<strong>It works!</strong>"}'import osimport requestsr = requests.post("https://api.spacepost.dev/emails",headers={"Authorization": f"Bearer {os.environ['SPACEPOST_API_KEY']}"},json={"from": "Acme <onboarding@test.spacepost.dev>","to": ["delivered@test.spacepost.dev"],"subject": "Hello from SpacePost","html": "<strong>It works!</strong>",},)print(r.status_code, r.json())package mainimport ("fmt""io""net/http""os""strings")func main() {body := `{"from":"Acme <onboarding@test.spacepost.dev>","to":["delivered@test.spacepost.dev"],"subject":"Hello from SpacePost","html":"<strong>It works!</strong>"}`req, _ := http.NewRequest("POST", "https://api.spacepost.dev/emails", strings.NewReader(body))req.Header.Set("Authorization", "Bearer "+os.Getenv("SPACEPOST_API_KEY"))req.Header.Set("Content-Type", "application/json")res, err := http.DefaultClient.Do(req)if err != nil {panic(err)}defer res.Body.Close()out, _ := io.ReadAll(res.Body)fmt.Println(res.StatusCode, string(out))}응답은
{ "id": "0192e1c4-7a3b-7c1e-9d2f-3b5a8e6f4c10" }입니다. 대시보드에서 이메일을 열면sent,delivered순서의 타임라인을 볼 수 있습니다. -
도메인 추가 및 확인
누구에게나 보내려면 소유한 도메인에서 보내야 합니다.
터미널 창 curl -X POST https://api.spacepost.dev/domains \-H "Authorization: Bearer $SPACEPOST_API_KEY" \-H "Content-Type: application/json" \-d '{ "name": "acme.com" }'응답에는 만들어야 할 DNS
records가 나열됩니다. DKIM CNAME 세 개와send서브도메인(사용자 지정 return path)용 MX, TXT 레코드입니다. DNS 제공업체에서 추가한 다음(Cloudflare, Route 53 등의 가이드) SpacePost에 확인을 요청합니다.터미널 창 curl -X POST https://api.spacepost.dev/domains/$DOMAIN_ID/verify \-H "Authorization: Bearer $SPACEPOST_API_KEY"CLI로 DNS 상태를 실시간으로 확인할 수도 있습니다.
터미널 창 npx spacepost domains doctor acme.com확인은 보통 몇 분 안에 끝납니다. DKIM이 확인되면 도메인
status가verified로 바뀝니다. -
내 도메인으로 보내기
await spacepost.emails.send({from: "Acme <hello@acme.com>",to: ["you@example.com"],subject: "First real email",html: "<p>Sent from my own domain.</p>",});
다음 단계
섹션 제목: “다음 단계”언어별 빠른 시작Next.js, Express, Hono, Python, Go, PHP, Ruby, Rust 등.
웹훅 설정이메일이 전달되거나 반송되거나 열람된 시점을 확인하세요.
전달률 모범 사례스팸함이 아닌 받은편지함에 도착하게 하세요.