Classic/VPC 환경에서 이용 가능합니다.
메일 발송을 요청합니다. 발송 요청 1건이 리소스 1개(requestId)로 생성되며, 발송은 비동기로 처리되므로 이 API는 접수 결과만 반환합니다.
요청
요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.
| 메서드 | URI |
|---|---|
| POST | /mail/v2/services/{serviceId}/requests |
요청 헤더
Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.
| 필드 | 필수 여부 | 설명 |
|---|---|---|
x-ncp-lang |
Optional | 응답 메시지 언어
|
요청 경로 파라미터
요청 경로 파라미터에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
serviceId |
String | Required | 메일 서비스 아이디
|
요청 바디
요청 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
senderAddress |
String | Conditional | 발신자 메일 주소
|
senderName |
String | Optional | 발신자 이름
|
templateNo |
Integer | Conditional | 템플릿 번호
|
title |
String | Conditional | 메일 제목
|
body |
String | Conditional | 메일 본문
|
individual |
Boolean | Optional | 개인 발송 여부
|
confirmAndSend |
Boolean | Optional | 확인 후 발송 여부
|
advertising |
Boolean | Optional | 광고 메일 여부
|
parameters |
Object | Optional | 전체 수신자에 공통 적용되는 치환 변수
|
reservationDateTime |
String | Optional | 예약 발송 일시
|
attachFileIds |
Array | Optional | 첨부파일 아이디 목록
|
recipients |
Array | Conditional | 수신자 목록: recipients
|
recipientGroupFilter |
Object | Conditional | 주소록 그룹 기반 수신자 지정: recipientGroupFilter
|
useBasicUnsubscribeMessage |
Boolean | Optional | 기본 수신 거부 문구 사용 여부
|
unsubscribeMessage |
String | Optional | 사용자 지정 수신 거부 문구
|
recipients와recipientGroupFilter를 모두 입력하면 두 목록을 이어 붙여 처리하며, 같은 주소가 양쪽에 있어도 중복은 제거되지 않습니다. 이 경우 해당 주소로 메일이 2통 발송되고 월 발송 한도도 2건 차감됩니다.recipientGroupFilter로 수신자를 지정하면 100,000명 건수 상한이 적용되지 않으며, 월 발송 한도만 적용됩니다.CC와BCC는 각각 최대 30명입니다.- 월 발송 한도를 초과하면
429 ResourceQuotaExceeded를 반환합니다. - 접수 응답에는 발송 상태가 포함되지 않습니다. 접수 직후 상태는 즉시 발송
READY, 예약 발송RESERVED이며, 이후 상태는 발송 요청 조회 API를 폴링해 확인합니다. 폴링 간격은 해당 API의retry-after응답 헤더를 따릅니다.
recipients
recipients에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
address |
String | Required | 수신자 메일 주소
|
name |
String | Optional | 수신자 이름
|
type |
String | Optional | 수신자 유형
|
parameters |
Object | Optional | 해당 수신자에만 적용되는 치환 변수
|
recipientGroupFilter
recipientGroupFilter에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
operator |
String | Optional | 그룹 조건 결합 연산자
|
groups |
Array | Required | 주소록 그룹명 목록 |
요청 예시
요청 예시는 다음과 같습니다.
curl --location --request POST 'https://sens.apigw.ntruss.com/mail/v2/services/ncp:mail:kr:1********2:main/requests' \
--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' \
--header 'Content-Type: application/json' \
--data '{
"senderAddress": "no_reply@company.com",
"senderName": "고객센터",
"title": "${customer_name}님 반갑습니다.",
"body": "귀하의 등급이 ${BEFORE_GRADE}에서 ${AFTER_GRADE}로 변경되었습니다.",
"individual": true,
"advertising": false,
"recipients": [
{
"address": "hongildong@example.com",
"name": "홍길동",
"type": "TO",
"parameters": {
"customer_name": "홍길동",
"BEFORE_GRADE": "SILVER",
"AFTER_GRADE": "GOLD"
}
}
],
"useBasicUnsubscribeMessage": true
}'
응답
응답 형식을 설명합니다.
응답 바디
응답 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
requestId |
String | - | 발송 요청 아이디 |
requestCount |
Integer | - | 발송 메일 건수
|
createDateTime |
String | - | 발송 요청 접수 일시
|
응답 상태 코드
응답 상태 코드에 대한 설명은 다음과 같습니다.
| HTTP 상태 코드 | 코드 | 메시지 | 설명 |
|---|---|---|---|
| 202 | - | Accepted | 발송 요청 접수 성공 |
| 400 | InvalidParameter | Bad Request | 요청 파라미터 오류
|
| 401 | Unauthorized | Unauthorized | 인증 실패 |
| 403 | Forbidden | Forbidden | 경로의 serviceId에 대한 권한 없음 |
| 404 | NotFound | Not Found | 경로의 자원이 존재하지 않음 |
| 413 | ContentTooLarge | Content Too Large | 요청 본문 크기 초과 |
| 429 | ResourceQuotaExceeded | Too Many Requests | 월 발송 한도 초과 |
| 429 | ThrottlingExceeded | Too Many Requests | 호출 빈도 제한 초과 |
| 500 | InternalServerError | Internal Server Error | 서버 내부 오류 |
Simple & Easy Notification Service의 다른 API와 달리, 메일 v2 API는 NCP API 표준 오류 형식으로 오류를 반환합니다. 응답 바디의 status, error(문자열) 필드 대신 아래의 error 객체가 반환됩니다.
오류 응답 바디
호출이 실패한 경우 응답 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
error |
Object | - | 오류 정보 |
error.errorCode |
String | - | 오류 코드
|
error.message |
String | - | 오류 코드별 고정 메시지
|
error.detail |
String | - | 요청별 상세 사유
|
error.fieldErrors |
Array | - | 파라미터별 오류 목록
|
오류 응답 예시
호출이 실패한 경우의 응답 예시는 다음과 같습니다.
{
"error": {
"errorCode": "InvalidParameter",
"message": "The request contains an invalid parameter."
}
}
응답 예시
응답 예시는 다음과 같습니다.
{
"requestId": "20260702-R-01K0ZQ8YV3M4N5P6R7S8T9VAWX-777",
"requestCount": 1,
"createDateTime": "2026-07-02T10:00:00+09:00"
}