sonar-sendmail
입력되는 데이터를 시스템 SMTP 설정과 소나의 공통 메일 템플릿을 사용하여 이메일로 전송합니다. 알림 템플릿에 등록된 기본 메일 본문을 적용하므로 소나가 자동으로 발송하는 다른 메일 알림과 동일한 레이아웃과 로고를 사용하며, 수신자 언어에 맞는 템플릿을 선택할 수 있습니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 관리자 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 미지원 |
문법
옵션
html=BOOLt로 설정하면message필드의 내용을 HTML 형식으로 전송합니다(기본값:f). HTML 형식으로 전송하는 경우 본문에서 허용되지 않는 태그와 속성을 제거한 후 템플릿에 삽입합니다.f인 경우 본문의 HTML 특수 문자를 이스케이프하고 줄바꿈과 공백을 유지한 채 템플릿에 삽입합니다.locale={en|ko|ja|zh}- 메일 템플릿 언어(기본값: 쿼리를 실행한 사용자의 로케일)
en: 영어ko: 한국어ja: 일본어zh: 중국어
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
to | 문자열 | 필수 | 수신자 이메일 주소. 여러 주소를 쉼표(,)로 구분하여 지정할 수 있습니다. |
subject | 문자열 | 필수 | 메일 제목 |
message | 문자열 | 필수 | 메일 본문 |
cc | 문자열 | 선택 | 참조(CC) 이메일 주소. 여러 주소를 쉼표(,)로 구분하여 지정할 수 있습니다. |
bcc | 문자열 | 선택 | 숨은 참조(BCC) 이메일 주소. 여러 주소를 쉼표(,)로 구분하여 지정할 수 있습니다. |
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
_sendmail_fail | 문자열 | 메일 전송에 실패한 경우 오류 사유. 전송에 성공하면 이 필드가 할당되지 않습니다. |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 300190 | sonar-sendmail 명령어는 관리자 권한이 필요합니다. | 관리자 권한이 없는 계정으로 명령어를 실행한 경우 |
| 300191 | 유효하지 않은 로케일입니다. locale 옵션 값은 en, ko, ja, zh 중 하나여야 합니다. | locale 옵션에 en, ko, ja, zh 외의 값을 지정한 경우 |
런타임 오류
해당 사항 없음
설명
sonar-sendmail 명령어는 입력되는 레코드마다 이메일을 전송합니다. 입력 레코드의 to, subject, message 필드를 읽어 수신자, 제목, 본문을 구성하고, cc와 bcc 필드가 있으면 참조 및 숨은 참조 주소를 추가합니다. 전송 성공 여부와 관계없이 입력 레코드를 그대로 다음 명령어로 전달합니다.
메일 본문은 알림 템플릿의 기본 메일 본문 템플릿에 삽입되어 전송됩니다. 템플릿의 ${SUBJECT}는 메일 제목으로, ${DATE}는 전송 시각(yyyy-MM-dd HH:mm 형식)으로, ${BODY}는 message 필드의 내용으로 치환됩니다. 템플릿을 등록하지 않았으면 내장된 기본 템플릿을 사용하며, 템플릿이 비어 있으면 본문만 전송합니다. 템플릿이 로고 이미지를 참조하는 경우 시스템에 등록된 메일 로고를 함께 첨부합니다.
템플릿은 locale 옵션으로 지정한 언어로 조회합니다. locale 옵션을 생략하면 쿼리를 실행한 사용자의 로케일을 사용하고, 사용자 로케일이 en, ko, ja, zh 중 하나가 아니면 영어 템플릿을 사용합니다. 지정한 언어의 템플릿이 없으면 영어 템플릿으로 대체합니다. 템플릿은 알림 템플릿 설정 API로 언어별로 등록할 수 있습니다.
다음과 같은 경우에는 메일을 전송하지 않고 _sendmail_fail 필드에 오류 사유를 기록합니다.
to,subject,message필드가 없는 경우:missing field: 필드명- 이메일 주소에 도메인 부분(
@)이 없는 경우:address has no domain part: 주소 - 시스템 SMTP 설정이 없는 경우:
smtp is not configured - 메일 전송 대기열이 가득 찬 경우:
queue full
시스템 SMTP 설정이 필요하므로 웹 콘솔의 시스템 설정에서 SMTP 서버를 먼저 구성해야 합니다.
입력 필드와 실패 처리 방식은 sendmail 명령어와 같지만 본문을 구성하는 방식이 다릅니다. sendmail은 제품에 내장된 고정 서식과 로고를 사용하고 언어를 선택할 수 없으며, 시스템 SMTP 설정이 없으면 쿼리 실행 단계에서 오류가 발생합니다. sonar-sendmail은 알림 템플릿에 등록한 서식과 시스템에 등록한 메일 로고를 사용하고, locale 옵션으로 언어를 지정할 수 있습니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
웹 접근 통계 이메일 전송
table WEB_APACHE_SAMPLE | stats count as total, count(status >= 400) as errors by method | eval to = "admin@example.com" | eval subject = "웹 접근 통계 보고" | eval message = concat(method, " 요청 총 ", string(total), "건, 오류 ", string(errors), "건") | sonar-sendmailHTTP 메서드별 총 요청 수와 오류 응답 수를 집계하여 각 행을 이메일로 전송합니다. 본문은 공통 메일 템플릿에 삽입되어 전송됩니다.
-
오류 응답 요약을 HTML 형식으로 전송
table WEB_APACHE_SAMPLE | search status >= 400 | stats count as cnt by status, uri | sort -cnt | limit 10 | eval to = "admin@example.com" | eval subject = "상위 오류 URL 보고" | eval message = concat("<b>", string(status), "</b> ", uri, " (", string(cnt), "건)") | sonar-sendmail html=t오류 응답 상위 10건의 상태 코드와 URI를 HTML 형식으로 전송합니다. 본문의 HTML은 정제 후 템플릿에 삽입됩니다.
-
영어 템플릿으로 참조 및 숨은 참조 포함 전송
table WEB_APACHE_SAMPLE | stats count as total | eval to = "admin@example.com" | eval cc = "manager@example.com" | eval bcc = "audit@example.com" | eval subject = "Daily web access summary" | eval message = concat("Total requests: ", string(total)) | sonar-sendmail locale=en영어 메일 템플릿을 사용하여 참조 및 숨은 참조 수신자에게 함께 전송합니다.
변경 이력
sonar-sendmail 명령어는 소나 4.0.2609.0 버전부터 사용 가능합니다.