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 템플릿을 조회해서 사용할 수 있습니다. 오늘도 재밌는 개발되시길 바라겠습니다. ^-^