이메일 보내기
이메일 보내기
도메인 검증을 마쳤다면 그 도메인의 주소로 메일을 보낼 수 있습니다.
from 은 이 계정에서 검증(verified)된 도메인의 주소여야 합니다. 검증 전이거나 남의 계정 도메인이면 403 email_domain_not_verified 입니다. 아직이라면 도메인 연결하기를 먼저 보세요.
기본 발송
이메일은 아직 SDK 에 포함되어 있지 않습니다. HTTP 로 직접 호출하세요.
필드
body 와 html 을 함께 주면 수신자의 메일 클라이언트가 표시 가능한 쪽을 고릅니다. HTML 만 보내는 것보다 평문을 함께 주는 편이 스팸 판정에도 유리합니다.
과금은 “통”이 아니라 “수신자”입니다
한 번 호출해 3명에게 보내면 3건입니다. to·cc·bcc 를 가리지 않습니다.
이건 ClawOps 만의 규칙이 아니라 이메일 업계의 공통 계산법입니다. 수신거부 상태인 주소는 보내지 않으므로 과금되지 않습니다 — 50명 중 2명이 수신거부였다면 48건입니다.
플랜별 발송 한도
수신자 수 기준으로 하루와 한 달에 보낼 수 있는 양이 정해져 있습니다.
이 숫자도 수신자 수입니다. 50명에게 한 번 보내면 50을 씁니다. 하루 기준은 한국 시간 자정에 초기화됩니다.
Trial 플랜은 이메일을 쓸 수 없습니다(422 plan_not_supported). 유료 플랜으로 변경한 뒤 사용하세요. 한도를 더 올려야 한다면 고객센터로 문의해 주세요.
첨부
첨부는 URL 로 전달합니다. 파일 바이트를 요청 본문에 실을 수 없습니다.
우리가 그 URL 을 서버에서 내려받아 메일에 붙입니다. 그래서 URL 은 인증 없이 접근 가능한 공개 주소여야 합니다.
파일명은 URL 경로에서 가져옵니다.
크기 상한
메시지 전체가 5MB 까지입니다.
이 값은 첨부를 base64 로 인코딩한 뒤 기준입니다. 인코딩하면 약 1.37배로 부풀기 때문에 원본 파일 기준으로는 약 3.6MB 입니다. 넘으면 400 message_too_large 입니다.
대부분의 거래 메일(영수증·주문확인·계약서 PDF)은 이 안에 들어갑니다. 더 큰 파일은 첨부 대신 링크로 보내세요 — 받는 사람의 메일 서버가 큰 첨부를 거부하는 경우가 많아(Gmail 25MB · Outlook 20MB 대) 반송으로 돌아올 가능성이 높습니다.
답장을 한 대화로 잇기
받는 사람의 메일 앱에서 주고받은 메일이 하나의 대화로 묶이게 하려면 두 필드를 채웁니다.
원본의 Message-ID 는 조회 응답이나 email.received webhook 의 messageId 에 있습니다. 꺾쇠(< >)는 있어도 없어도 됩니다.
헤더가 완벽해도 제목이 다르면 Gmail·Outlook 은 새 대화로 엽니다. 두 클라이언트는 정규화한 제목을 함께 봅니다. 원본 제목에 Re: 를 붙인 형태를 그대로 쓰고, 이미 Re: 로 시작하면 덧붙이지 마세요.
replyTo 는 스레드와 무관합니다. 받는 사람이 답장할 주소를 from 과 다르게 지정하는 필드입니다 — no-reply@ 로 보내고 support@ 로 받는 구성에 씁니다.
긴 대화는 공급자의 헤더 길이 상한 때문에 RFC 5537 §3.4.4 에 따라 줄여서 나갑니다. 첫 항목과 최근 항목은 남고 가운데가 빠집니다. 발송이 실패하지는 않으며, 응답의 references 가 실제로 나간 목록입니다.
중복 발송 막기
재시도 경로가 있다면 idempotencyKey 를 채웁니다. 같은 계정에서 같은 키로 다시 요청하면 발송하지 않고 1회차 결과를 그대로 돌려줍니다.
본문이 달라도 검사하지 않습니다. 같은 키로 다른 내용을 보내면 새 메일은 나가지 않고 1회차 결과가 돌아옵니다. 키는 메일 한 통 단위로 만드세요(order-1024-접수 처럼). 만료는 없습니다.
순차 재시도를 막는 용도입니다. 같은 키로 동시에 두 요청이 들어오면 둘 다 나갈 수 있습니다. 미지정이면 매번 발송하고, 빈 문자열은 400 입니다 — 템플릿에서 빈 값이 들어가 멱등이 조용히 꺼지는 걸 막기 위해서입니다.
발송 결과는 나중에 확정됩니다
201 은 공급자가 접수했다는 뜻이지 수신함에 도착했다는 뜻이 아닙니다.
실제 전달·반송·수신거부는 비동기로 확인되며 webhook 으로 전달됩니다.
⭐ 영구 반송과 스팸 신고는 수신거부에 자동으로 오릅니다 — 그 주소로는 다음부터 나가지 않고 과금도 되지 않습니다. 자세한 것은 수신거부와 반송을 보세요.
보낸 메일이 스팸함으로 간다면 발신 도메인에 반송 주소와 DMARC 를 심었는지 확인하세요. 없어도 발송은 되지만 SPF 인증이 서지 않아, 특히 하루 5,000통을 넘기는 도메인에서 차이가 큽니다 — 도달률 높이기.
자주 만나는 오류
다음: 수신거부와 반송