Available in Classic and VPC
Request an email to be sent, specifying the recipient, sender, mail content, etc. The mailing operation is processed asynchronously.Note
          - You can send up to 100,000 recipients at a time, and it is processed in batches of 30 by default. However, you can send more than 100,000 recipients when you enter the recipient group combination sending condition (
recipientGroupFilter). - You can specify up to 30 recipients for Cc and Bcc.
 - Email bodies are allowed to be up to 500 KB.
 - The default sending limit is 1,000,000 per month, but you can request an increase through Support.
 - The sending request limit is calculated based on the number of email recipients. A send request for 100 recipients is considered 100 send requests.
 
Request
The following describes the request format for the endpoint. The request format is as follows:
| Method | URI | 
|---|---|
| POST | /mails | 
Request headers
For headers common to Cloud Outbound Mailer APIs, see Cloud Outbound Mailer request headers.
Request body
The following describes the request body.
| Field | Type | Required | Description | 
|---|---|---|---|
senderAddress | 
String | Conditional | Sender's email address
  | 
senderName | 
String | Optional | Sender's name (byte)
  | 
templateSid | 
Integer | Optional | SID of the template you want to use to create the email
  | 
title | 
String | Conditional | Email subject (byte)
  | 
body | 
String | Conditional | Email body (KB)
  | 
individual | 
Boolean | Optional | Whether to send generally or by individual
  | 
confirmAndSend | 
Boolean | Optional | Whether to send after confirmation
  | 
advertising | 
Boolean | Optional | Whether it is advertising email
  | 
parameters | 
Object | Optional | Substitution parameter
  | 
referencesHeader | 
String | Optional | References header
  | 
reservationUtc | 
Long | Optional | Reserved delivery date and time
  | 
reservationDateTime | 
String | Optional | Reserved delivery date and time (yyyy-MM-dd HH:mm)
  | 
attachFileIds | 
List<String> | Optional | ID list of attachments
  | 
recipients | 
List<RecipientForRequest> | Conditional | Recipient list
  | 
recipientGroupFilter | 
RecipientGroupFilter | Optional | Recipient group combination filter | 
useBasicUnsubscribeMsg | 
Boolean | Optional | Whether to use unsubscribe messages in advertising email
  | 
unsubscribeMessage | 
String | Conditional | Custom unsubscribe message text
  | 
Request example
The following is a sample request.
Create without template
The following is a sample request for writing your own email content without using a template.
curl --location --request POST 'https://mail.apigw.ntruss.com/api/v1/mails'
--header 'x-ncp-apigw-timestamp: {Timestamp}'
--header 'x-ncp-iam-access-key: {Access Key}'
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}'
--header 'Content-Type: application/json'
--data-raw '{"senderAddress":"no_reply@company.com","title":"Hello, ${customer_name}.","body":"Your grade has been changed from ${BEFORE_GRADE} to ${AFTER_GRADE}.","recipients":[{"address":"hongildong@naver_.com","name":"Gildong Hong","type":"R","parameters":{"customer_name":"Gildong Hong","BEFORE_GRADE":"SILVER","AFTER_GRADE":"GOLD"}},{"address":"chulsoo@daum_.net","name":null,"type":"R","parameters":{"customer_name":"Chulsoo","BEFORE_GRADE":"BRONZE","AFTER_GRADE":"SILVER"}}],"individual":true,"advertising":false}'
Create with template
The following is a sample request for writing your own email content using a template.
curl --location --request POST 'https://mail.apigw.ntruss.com/api/v1/mails'
--header 'x-ncp-apigw-timestamp: {Timestamp}'
--header 'x-ncp-iam-access-key: {Access Key}'
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}'
--header 'Content-Type: application/json'
--data-raw '{"templateSid" : 1,"recipients":[{"address":"hongildong@naver_.com","name":"Gildong Hong","type":"R","parameters":{"customer_name":"Gildong Hong","BEFORE_GRADE":"SILVER","AFTER_GRADE":"GOLD"}},{"address":"chulsoo@daum_.net","name":null,"type":"R","parameters":{"customer_name":"Chulsoo","BEFORE_GRADE":"BRONZE","AFTER_GRADE":"SILVER"}}],"individual":true,"advertising":false}'
Response
The following describes the response format.
Response body
The following describes the response body.
| Field | Type | Required | Description | 
|---|---|---|---|
requestId | 
String | Required | Email delivery request ID to distinguish each request
  | 
count | 
Integer | Required | Number of mailing requests | 
Response status codes
The following describes the response status codes.
| HTTP status code | Code | Description | 
|---|---|---|
| 201 | - | Request succeeded | 
| 400 | - | Authentication failed, invalid request | 
| 400 | 77101 | Error in login information | 
| 400 | 77102 | Request error | 
| 400 | 77103 | Requested resource does not exist | 
| 403 | 77201 | No permissions to the requested resource | 
| 403 | 77202 | Call from a user who hasn't subscribed to the email service | 
| 405 | 77001 | Unsupported method type | 
| 415 | 77002 | Unsupported media type | 
| 500 | - | Server error | 
| 500 | 77301 | Default project does not exist | 
| 500 | 77302 | External system API integration error | 
| 500 | 77303 | Other internal server error | 
Response example
The following is a sample response.
{
  "requestId":"20181203000000000201",
  "count":10000
}