Questions · Updated 2026-09-28

Why does my email say delivered but the recipient did not get it?

Delivered means the recipient's mail server accepted the message; what that server did after accepting it is not visible from outside. GET /emails/{id}/events has the exact time and the reply the receiving server gave, and GET /emails/{id}/mime is the exact source to hand to the recipient's mail admin.

delivered means the recipient's mail server accepted the message, and that acceptance is recorded as the email.delivered event. From that moment the message is in the receiving server's hands: a spam folder, a filter, a forwarding rule, a mailbox handled after acceptance. GET /emails/{id}/events gives you the exact time and the reply that server gave, and GET /emails/{id}/mime gives you the bytes that left, so the recipient's mail admin can find it. Nothing on this page is a placement promise.

Read what was recorded

GET /emails/{id} returns status and last_event. When status is delivered, open GET /emails/{id}/events. Its summary is "Every event recorded for one message, oldest first, with the provider detail." The email.delivered row carries occurred_at, detail and provider_message_id.

curl -sS -X GET https://api.agentisend.com/emails/9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42/events \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "data": [],
  "has_more": true,
  "next_cursor": "string",
  "object": "string"
}
Response

detail on that row is the receiving server's own answer: it names the server and quotes the reply it gave when it accepted the message. provider_message_id is the id the message carried on our side when it left. Give the detail line and occurred_at to the recipient's mail administrator; the reply and the time let them find the message in their own logs and see where their system put it.

Send the exact source

GET /emails/{id}/mime returns, in its summary's words, "The exact RFC 5322 source of this email". The agents page calls it the thing to attach when a recipient says an email never arrived. Attach it to the report you send the admin, or read it yourself to confirm the To header, the From header and the body are what you meant to send.

Check the address before the server

A message to a wrong address can still read delivered, because the wrong mailbox accepted it. Compare to on GET /emails/{id} with the address the recipient gave you, character by character. Two other outcomes never reach delivered, so they are not this problem: a suppressed address is refused at send time with suppressed_recipient, and GET /suppressions says why; a refused message reads bounced, and Why did my email bounce? covers it. When status is anything other than delivered, GET /emails/{id}/explain names the verdict and whether a retry can help.

Next