API
Отправка пакета
До 100 за раз.
POSTapi.openemail.uk/emails/batch
Выполняет настоящий запрос в вашем рабочем пространстве, с вашим собственным ключом.
По элементам, никогда «всё или ничего»
Каждое сообщение принимается или отклоняется самостоятельно, и ответ сообщает и о том, и о другом. Пакет, откатывающийся из-за одного плохого адреса, превратил бы ваш повтор в вопрос о том, какие сообщения уже ушли, — а именно от такого учёта вы и уходили, беря пакет.
Отправка пакета
Тело — массив либо { "emails": [...] }. Каждое сообщение принимает те же поля, что и одиночная отправка.
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" } } ]}207, а не 200: часть прошла. Читайте data[].status по каждому элементу, а не ветвитесь по коду статуса.
Idempotency-Key в пакете внутренне расширяется по каждому элементу, поэтому один ключ на сотне сообщений не схлопывает их в первое.