문서로 건너뛰기
API

배치 발송

한 번에 최대 100건.

POSTapi.openemail.uk/emails/batch

본인 키로 워크스페이스에 실제 호출을 실행합니다.

전부 아니면 전무가 아니라, 항목별로

각 메시지는 개별적으로 수락되거나 거부되며, 응답은 둘 다 보고합니다. 잘못된 주소 하나 때문에 전체가 롤백된다면, 재시도할 때 어떤 메시지가 이미 나갔는지를 따져야 하는데, 그건 애초에 배치를 쓰면서 피하려던 추적 작업입니다.

배치 발송

본문은 배열이거나 { "emails": [...] }입니다. 각 메시지는 단건 발송과 동일한 필드를 받습니다.

curl
curl -X POST "$OE/emails/batch" -H "$AUTH" -H "Content-Type: application/json" \  -d '{    "emails": [      { "from": "[email protected]", "to": ["[email protected]"],   "subject": "Invoice",  "html": "<p>1</p>" },      { "from": "[email protected]",   "to": ["[email protected]"], "subject": "Invoice",  "html": "<p>2</p>" },      { "from": "[email protected]", "to": ["broken@"],           "subject": "Invoice",  "html": "<p>3</p>" }    ]  }'
응답
HTTP/1.1 207 Multi-Status {  "object": "list",  "sent": 1,  "failed": 2,  "data": [    { "index": 0, "status": "ok", "email": { "id": "msg_e7e468…", "status": "sent" } },    {      "index": 1,      "status": "error",      "error": { "type": "permission_error", "code": "from_address_forbidden", "param": "from" }    },    {      "index": 2,      "status": "error",      "error": { "type": "validation_error", "code": "invalid_email_address", "param": "to.0" }    }  ]}

200이 아니라 207입니다. 일부는 성공했다는 뜻입니다. 상태 코드로 분기하지 말고 항목별 data[].status를 읽으세요.

배치에 붙인 Idempotency-Key는 내부적으로 항목별로 확장되므로, 100개 메시지에 키 하나를 써도 전부 첫 번째 하나로 뭉뚱그려지지 않습니다.