Framework/Springboot
스프링부트로 이메일 인증 서비스 구현하기
IFLA
2024. 1. 31. 09:00
이메일 인증 서비스를 구현하다보니 이메일의 내용을 템플릿으로 만들어 필요한 인증코드 값만 넘겨주면 Java 코드에서는 더 간단하게 코드를 작성할 수 있을 것 같았습니다. 그래서 이메일에 들어갈 본문을 html 파일로 작성을 하고 작성한 html 파일을 조회를 해야하는 기능이 필요했습니다.
개발 환경
개발 구성
IDE: IntelliJ
JDK 버전 : 17
스프링부트 : 3.1.0
언어 : Java
플러그인
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'ognl:ognl:3.4.2'
}
위의 플러그인을 추가해줍니다.
thymeleaf 플러그인은 '템플릿 엔진'의 일종입니다. html 태그에 속성을 추가해 페이지에 동적으로 값을 추가하거나 처리할 수 있습니다. 템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져 html 문서를 출력하는 소프트웨어입니다. thyemleaf 는 서버 템플릿 엔진입니다. 서버에서 미리 정의된 템플릿에 넣어 html 을 그려내 클라이언트에 전달해줍니다.
src/main/resources/templates 폴더에 mail.html 파일을 생성해줍니다.
mail.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div style="margin:120px">
<div style="margin-bottom: 10px">
<h1>인증 코드 메일입니다.</h1>
<br/>
<h3 style="text-align: center;"> 아래 코드를 사이트에 입력해주십시오</h3>
</div>
<div style="text-align: center;">
<h2 style="color: crimson;" th:text="${code}"></h2>
</div>
<br/>
</div>
</body>
</html>
MailService.java
// 이메일 내용 초기화
private String setContext(String code) {
Context context = new Context();
TemplateEngine templateEngine = new TemplateEngine();
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
context.setVariable("code", code);
templateResolver.setPrefix("templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCacheable(false);
templateEngine.setTemplateResolver(templateResolver);
return templateEngine.process("mail", context);
}
setContext 메소드는 템플릿으로 작성한 html 파일을 String 타입으로 변환해주는 메소드입니다.
- context.setVariable : mail.html 파일에 넘겨줄 값을 설정합니다.
- templateResolver.setPrefix : 파일을 찾기 위해 파일의 앞 부분을 설정합니다.
- templateResolver.setSuffix : 파일 명칭 뒤에 붙는 확장자 타입을 설정합니다.
- templateResolver.setTemplatemode : 템플릿의 모드를 지정합니다.
- templateEngine.process : 파일명과 파일에 넘겨줄 context 를 설정합니다. html 파일을 String 타입으로 변환합니다.
위의 방법을 통해 Java 에서 html 템플릿을 조회해서 사용할 수 있습니다. 오늘도 재밌는 개발되시길 바라겠습니다. ^-^