알림 모듈 사용 가이드
개요
알림 모듈은 외부에 알림 메시지를 전달하고자 하는 기능을 모아두는 모듈로 현재 메일 관현 기능만을 포함하고 있다.
Mail Util은 SMTP서버를 접속하고 발신자, 수신자, 제목, 내용 등의 데이터를 넣고 메일을 발신하는 유틸이다.
사전에 SMTP 서버가 별도로 구축되어있어야 하며 SMTP 서버의 id, password, port 등을 알고있어야 한다.
관련 클래스
CommonAuth: SMTP 서버에 대한 정보를 갖고 있는 클래스이다.
MailVo: 하나의 메일에 대한 수신자, 발신자, 제목, 내용 등의 데이터를 담고 있는 클래스이다. 내부 static 클래스 Builder를 통해 생성할 수 있다.
MailUtil: CommonAuth와 MailVo를 이용하여 직접 메일을 발신하는 기능을 하는 유틸 클래스이다.
사용법
SMTP 서버 구축
dependency 등록(pom.xml)
<dependency> <groupId>net.lotte.chamomile.module</groupId> <artifactId>chamomile-notification</artifactId> </dependency>yaml 파일 설정(application.yml)
chmm: email: smtp: address: 111.222.333.444 port: 1234 id: lotte pw: 1234메일 발신
MailUtil bean을 이용해 메일을 발신한다.
@RequiredArgsConstructor public class TestEmailController { private final CommonAuth commonAuth; private final MailUtil mailUtil; @GetMapping("/email") public void emailTest() throws EmailException, IOException { String msg = "<html><body><h1>This is Email Test</h1></body></html>" MailVo mailVo = new MailVo.MailVoBuilder() .setFrom("test@test.com") .setHtmlMsg(msg) .setSubject("제목") .addTo("test@test.com") .build(); mailUtil.send(new MailVo[] {mailVo}); } }
템플릿 사용
위와 같이 String에 html 형식의 문자열을 담는 방식이 불편하다면 다음과 같이 하면 된다.
resources 폴더 하위에 email 폴더 생성 후, html 파일 생성
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>이메일 테스트 템플릿입니다.</h1> <img src="https://chamomile.lotteinnovate.com/storage/2022/06/cropped-chamomile-1-1.png" /> </body> </html>메일 발신
... MailVo mailVo = new MailVo.MailVoBuilder() .setFrom("test@test") .setTemplate("test.html") .setSubject("제목") .addTo("test@test") .build(); mailUtil.send(new MailVo[] {mailVo}); ...
MailVo 구조
빌더를 통해 만들어지는 MailVo 구조는 아래와 같다.
필드명 | 메소드 | 설명 |
---|---|---|
from | setFrom | 발신자지정 |
cc | addCc(String[] cc) | 참조자 추가 |
addCc(String cc) | 참조자 추가 | |
subCc(String cc) | 참조자 삭제 | |
bcc | addBcc(String[] bcc) | 숨은참조자 추가 |
addBcc(String bcc) | 숨은참조자 추가 | |
subBcc(String bcc) | 숨은참조자 삭제 | |
to | addTo(String[] to) | 수신자 추가 |
addTo(String to) | 수신자 추가 | |
subTo(String to) | 수신자 삭제 | |
subject | setSubject(String subject) | 제목 입력 |
msg | setMsg(String msg) | 메시지 입력 |
charset | setCharset(STring charset) | 인코딩 정보 입력(기본UTF-8) |
attachPath | addAttachPath(String path) | 첨부파일경로 추가 |
subAttachPath(String path) | 첨부파일경로 삭제 | |
attachName | addAttachName(String name) | 첨부파일명 추가 |
subAttachName(String name) | 첨부파일 경로 삭제 | |
isAttach | 자동 입력 | |
htmlMsg | setHtmlMsg(String htmlMsg) | html 메시지 입력 |
template | setTemplate | html 파일명(확장자 포함) 입력 |