--- title: "Get email details" slug: "sens-mail-get" updated: 2026-10-08T04:15:09Z published: 2026-10-08T04:15:09Z canonical: "api.ncloud-docs.com/sens-mail-get" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Get email details Available in Classic and VPC This retrieves the details of a single email included in the delivery request. It returns the email subject, body, list of attachments, and delivery results for each recipient (`recipients[]`). ## Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | GET | /mail/v2/services/{serviceId}/requests/{requestId}/mails/{mailId} | ### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). | Field | Required | Description | | --- | --- | --- | | `x-ncp-lang` | Optional | Response message language - `en-US` (default) \| `ko-KR` \| `ja-JP` | ### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Email service ID - NRN (NCP Resource Name) format (e.g., `ncp:mail:kr:1********2:main`). - See [Get project list](/docs/en/sens-project-list). | | `requestId` | String | Required | Delivery request ID - See [Get delivery list](/docs/en/sens-mail-request-list). | | `mailId` | String | Required | Email ID - Must be an email belonging to the `requestId` specified in the path. - See [Get email list](/docs/en/sens-mail-list). | ### Request example The request example is as follows: ``` curl --location --request GET 'https://sens.apigw.ntruss.com/mail/v2/services/ncp:mail:kr:1********2:main/requests/20260712-R-01K0ZQ8YV3M4N5P6R7S8T9VAWX-777/mails/20260712-M-01K0ZQ8YVBQ7C2D3E4F5G6H7J8-777' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'x-ncp-lang: ko-KR' ``` ## Response This section describes the response format. ### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Delivery request ID | | `mailId` | String | - | Email ID | | `requesterIp` | String | - | IP address of the client that requested the message - Records the source address at the time of the request for both console and API deliveries. | | `createDateTime` | String | - | Delivery request acceptance date and time - ISO 8601 format | | `title` | String | - | Email subject - The result of replacing placeholders with actual values. | | `templateNo` | Integer | - | Template number used - `null` for deliveries that didn't use a template. | | `templateName` | String | - | Template name used - `null` for deliveries that didn't use a template. | | `status` | String | - | Email delivery status - `READY` \| `RESERVED` \| `SENDING` \| `COMPLETED` \| `FAILED` \| `PARTIAL_FAILED` \| `CANCELED` - `READY`: Waiting for delivery to begin. - `RESERVED`: Waiting for the scheduled delivery time. - `SENDING`: Sending the email. - `COMPLETED`: Delivery completed to all recipients of the email. - `FAILED`: Delivery failed to all recipients associated with the email. - `PARTIAL_FAILED`: Delivery failed to only some of the recipients associated with the email. - `CANCELED`: Delivery canceled. | | `senderAddress` | String | - | Sender email address | | `senderName` | String | - | Sender name - `null` for deliveries with no entry. | | `sendDateTime` | String | - | Delivery completion date and time - ISO 8601 format. - `null` for emails whose delivery hasn't started. | | `reservationDateTime` | String | - | Scheduled delivery date and time - ISO 8601 format. - `null` for immediate delivery. | | `body` | String | - | Email body - Result of replacing placeholders with actual values. - Includes an opt-out message if `advertising` is `true`. | | `advertising` | Boolean | - | Whether it is an ad email - `true` \| `false` | | `attachFiles` | Array | - | Attachment list: [attachFiles](/docs/en/sens-mail-get#attachfiles) - An empty array if there are no attachments. | | `recipients` | Array | - | List of delivery results by recipient: [recipients](/docs/en/sens-mail-get#recipients) - Includes `CC` and `BCC` recipients. - For bulk delivery, emails are generated in groups of 30 recipients, so the maximum number of entries is 30. - For individual delivery, one email is sent per recipient, so there is one entry. | #### `attachFiles` The following describes `attachFiles`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `fileId` | String | - | Attachment ID | | `fileName` | String | - | Attachment file name - Up to 100 characters | | `fileSize` | Integer | - | Attachment file size (byte) | #### `recipients` The following describes `recipients`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `address` | String | - | Recipient email address | | `name` | String | - | Recipient name - `null` for recipients with no entry. | | `type` | String | - | Recipient type - `TO` \| `CC` \| `BCC` - `TO`: Recipient - `CC`: Cc - `BCC`: Bcc | | `received` | Boolean | - | Read receipt status - `true` \| `false` - `true`: The recipient has read the email. - `false`: The recipient has not read the email. | | `receivedDateTime` | String | - | Read receipt date and time - ISO 8601 format. - `null` if not read. | | `status` | String | - | Delivery status by recipient - `READY` \| `RESERVED` \| `SENDING` \| `RETRYING` \| `COMPLETED` \| `FAILED` \| `ERRORED` \| `UNSUBSCRIBED` \| `BLOCKED` \| `CANCELED` - `READY`: Waiting for delivery to begin. - `RESERVED`: Waiting for the scheduled delivery time. - `SENDING`: Attempting to send the email to the recipient. - `RETRYING`: Waiting for a retry scheduled due to a temporary failure. - `COMPLETED`: The email was successfully sent to the recipient. - `FAILED`: Delivery failed due to rejection by the recipient’s server, etc. - `ERRORED`: Terminated due to an error during delivery. - `UNSUBSCRIBED`: Not sent because the address is on the opt-out list. - `BLOCKED`: Not sent because the address is on the block list. - `CANCELED`: Delivery was canceled. | | `retryCount` | Integer | - | Number of retry attempts - The initial delivery attempt is not included in the retry count. | | `sendResultCode` | String | - | Delivery result code - For the full list of values, see [sendResultCode](/docs/en/sens-mail-get#sendresultcode). - An open set to which values may be added. - `null` for recipients for whom delivery was not completed. | | `sendResultMessage` | String | - | Raw message of the delivery result - Raw SMTP response returned by the receiving mail server. - `null` for recipients for whom delivery was not completed. | #### `sendResultCode` The following describes `recipients[].sendResultCode`. | Code | Description | | --- | --- | | `CANCELED_MAIL` | Cancel delivery | | `CONNECTION_ABNORMAL` | Temporary delivery failure due to abnormal connection | | `CONTENT_HAS_TAG_FORM` | Delivery failure due to a replacement tag included in the mail content | | `DKIM_FAIL` | Email delivery failed due to a DKIM error. | | `EMPTY_BODY_CONTENT` | Failed to send because the email body could not be configured due to a system error | | `MAILBOX_ABNORMAL` | Temporary delivery failure due to abnormal recipient's inbox | | `MAILBOX_ERROR` | Delivery failure due to an error in the recipient's inbox | | `MAIL_CONTENTS_ERROR` | Delivery failure due to a mail content error | | `MAIL_SENT` | Delivery successful | | `MIME_MESSAGE_CREATE_FAIL` | Failed to send because MIME message could not be created due to a system error | | `NETWORK_ABNORMAL` | Temporary delivery failure due to abnormal networks | | `NETWORK_ERROR` | Delivery failure due to a network error | | `NONEXISTENT_DOMAIN_ADDRESS` | Failed to send because the recipient domain does not exist | | `RECEIVE_MAIL_SERVICE_ABNORMAL` | Temporary delivery failure due to recipient's abnormal mail service | | `RECEIVE_MAIL_SERVICE_ERROR` | Delivery failure due to a recipient's mail service error | | `RECIPIENT_ADDRESS_ERROR` | Delivery failure due to a recipient address error | | `RESENDING_MAIL` | Resending | | `RESEND_MAIL_FAIL` | Delivery failure due to excessive number of resending attempts | | `SECURITY_AND_POLICY_ABNORMAL` | Temporary delivery failure due to abnormal security and policy | | `SECURITY_AND_POLICY_ERROR` | Delivery failure due to security and policy errors | | `SEND_BLOCK_ADDRESS` | Blocked because the delivery request was made to a recipient who blocks the delivery | | `SMTP_ABNORMAL` | Temporary delivery failure due to abnormal SMTP with the recipient | | `SMTP_ERROR` | Delivery failure due to an SMTP error with the recipient | | `TEST_MAIL_SEND` | Sending test email of system | | `UNDEFINED_ERROR` | Delivery failure due to an undefined error | | `UNKNOWN_CAUSE_FAIL` | Delivery failure due to an unknown error occurred in or out of the system | | `UNKNOWN_DOMAIN_ADDRESS` | Delivery failure due to requests being made to unknown or blocked domains | | `UNSUBSCRIBE_ADDRESS` | Blocked because the delivery request was made to a recipient who rejects the email | | `UNSUPPORTED_ENCODING_ADDRESS` | Delivery failure due to a failure in encoding the recipient's address | | `READ_TIMED_OUT` | Failed to send due to a lack of response from the receiving server. | | `CONNECTION_ERROR` | Failed to send due to the receiving server closing the connection. | Note - `mailId` must be an email associated with the `requestId` in the path. Only authorized callers are permitted; if the email is not associated, a `404` error is returned. - For emails that have not been sent, `sendDateTime`, `recipients[].sendResultCode`, and `recipients[].sendResultMessage` are `null`. ### Response status codes The following describes the response status codes: | HTTP status code | Code | Message | Description | | --- | --- | --- | --- | | 200 | - | OK | Request succeeded | | 400 | InvalidParameter | Bad Request | Request parameter error | | 401 | Unauthorized | Unauthorized | Authentication failed | | 403 | Forbidden | Forbidden | No permission for the `serviceId` in the path. | | 404 | NotFound | Not Found | Either the `requestId` or `mailId` in the path does not exist. | | 500 | InternalServerError | Internal Server Error | Internal server error | Note Unlike other APIs in the Simple & Easy Notification Service, the Mail v2 API returns errors in the NCP API standard error format. Instead of the `status` and `error` (string) fields in the response body, the `error` object shown below is returned. #### Error response body The response body includes the following data if the call fails. | Field | Type | Required | Description | | --- | --- | --- | --- | | `error` | Object | - | Error information | | `error.errorCode` | String | - | Error code - See the code column in the response status code table. | | `error.message` | String | - | Predefined message for each error code - Returned in the language specified in the `x-ncp-lang` header. | | `error.detail` | String | - | Detailed reason for each request - This field is omitted if there is no applicable reason. | | `error.fieldErrors` | Array | - | List of errors by parameter - `field`: Name of the parameter where the error occurred. - `message`: Reason for the error. - If the error is not parameter-related, this field is omitted. | #### Error response example The following is a sample response upon a failed call. ``` { "error": { "errorCode": "NotFound", "message": "The requested resource was not found." } } ``` ### Response example The response example is as follows: ``` { "requestId": "20260712-R-01K0ZQ8YV3M4N5P6R7S8T9VAWX-777", "mailId": "20260712-M-01K0ZQ8YVBQ7C2D3E4F5G6H7J8-777", "requesterIp": "203.0.113.42", "createDateTime": "2026-07-12T15:19:53+09:00", "title": "Welcome, Gildong Hong.", "templateNo": 41, "templateName": "Membership level change notice", "status": "PARTIAL_FAILED", "senderAddress": "no_reply@company.com", "senderName": "Customer center", "sendDateTime": "2026-07-12T15:19:53+09:00", "reservationDateTime": null, "body": "Your membership level has changed from SILVER to GOLD.", "advertising": false, "attachFiles": [ { "fileId": "8f14e45fceea167a5a36dedd4bea2543", "fileName": "Membership level guide.pdf", "fileSize": 204800 } ], "recipients": [ { "address": "hongildong@example.com", "name": "Gildong Hong", "type": "TO", "received": false, "receivedDateTime": null, "status": "COMPLETED", "retryCount": 0, "sendResultCode": "MAIL_SENT", "sendResultMessage": "Mail sent." }, { "address": "test12@example.com", "name": null, "type": "CC", "received": false, "receivedDateTime": null, "status": "FAILED", "retryCount": 0, "sendResultCode": "RECIPIENT_ADDRESS_ERROR", "sendResultMessage": "550 5.1.1 No such user - nsmtp" } ] } ```