[java] Spring Framework를 사용한 전자메일 템플릿화 방법

전자메일은 모바일 알림, 이벤트 알림, 패스워드 초기화 등 다양한 용도로 사용되는 중요한 커뮤니케이션 도구입니다. Spring Framework를 사용하면 전자메일을 쉽게 템플릿화하여 보다 유지보수가 용이하고 일관된 디자인을 제공할 수 있습니다. 이번 블로그에서는 Spring Framework를 사용하여 전자메일을 템플릿화하는 방법에 대해 알아보겠습니다.

1. 의존성 설정

먼저, Spring Framework를 사용하기 위해 pom.xml에 필요한 의존성을 추가해야 합니다. 아래의 의존성을 추가하면 Spring Framework와 Spring Boot, Thymeleaf와 같은 필요한 라이브러리를 사용할 수 있습니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2. 메일 템플릿 작성

메일 템플릿은 HTML로 작성됩니다. Thymeleaf 템플릿 엔진을 사용하여 동적으로 값을 삽입하거나 반복문, 조건문을 처리할 수 있습니다. 아래는 예제로 사용할 간단한 메일 템플릿입니다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
    <h3 th:text="${title}"></h3>
    <p th:text="${content}"></p>
</body>
</html>

3. 메일 전송 기능 구현

메일 전송을 위해 메일 서비스 클래스를 작성합니다. 메일 서비스에서는 Spring의 JavaMailSender를 사용하여 전자메일을 전송할 수 있습니다. 아래는 간단한 메일 서비스 클래스 예제입니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

@Service
public class MailService {
    
    @Autowired
    private JavaMailSender mailSender;

    public void sendMail(String to, String subject, String template, Context context) throws MailException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, "utf-8");
        
        try {
            String htmlContent = templateEngine.process(template, context);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(htmlContent, true);
            
            mailSender.send(message);
        } catch (Exception e) {
            throw new MailException("Failed to send email", e);
        }
    }
}

4. 메일 전송하기

메일을 템플릿화하고 메일 서비스를 구현했으면 실제로 메일을 전송해야합니다. 아래는 메일을 전송하는 예제 코드입니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/mail")
public class MailController {

    @Autowired
    private MailService mailService;

    @RequestMapping("/send")
    public String sendMail() {
        // 메일 내용 작성
        String to = "example@example.com";
        String subject = "Spring Framework로 전송된 메일";
        String template = "mail-template.html";
        
        Context context = new Context();
        context.setVariable("title", "안녕하세요!");
        context.setVariable("content", "Spring Framework로 전송된 메일 내용입니다.");
        
        // 메일 전송
        try {
            mailService.sendMail(to, subject, template, context);
        } catch (Exception e) {
            // 예외 처리
        }
        
        return "mail-send";
    }
}

위의 예제 코드에서는 “/mail/send” 경로로 요청이 들어왔을 때 메일을 전송합니다. 이때 메일 템플릿에서 사용할 값들을 Context 객체에 설정하고, 메일 템플릿 파일의 이름과 함께 MailServicesendMail 메소드를 호출하여 메일을 전송합니다.

결론

Spring Framework를 사용하여 전자메일을 템플릿화하는 방법에 대해 알아보았습니다. 이를 통해 전자메일의 일관성을 유지하고 유지보수를 용이하게 할 수 있습니다. 다양한 용도로 사용되는 전자메일을 템플릿화하여 개발 생산성을 향상시킬 수 있습니다.