Java에서 이메일을 보내기 위해서는 JavaMail API를 사용하거나 Spring Framework에서 제공하는 MailService를 활용할 수 있습니다. 이번 글에서는 Spring의 MailService를 이용한 이메일 발송 방법에 대해 설명합니다.
1. 의존성 추가
Spring에서 이메일을 보내기 위해서는 먼저 필요한 라이브러리를 pom.xml에 추가해야 합니다. Maven을 사용하는 경우 아래 의존성을 추가합니다:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2. 이메일 설정
Spring Boot에서는 `application.properties` 또는 `application.yml` 파일을 사용하여 이메일 서버 설정을 할 수 있습니다. SMTP 서버 설정 예시는 다음과 같습니다:
spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=your-email@gmail.com spring.mail.password=your-email-password spring.mail.protocol=smtp spring.mail.smtp.auth=true spring.mail.smtp.starttls.enable=true
3. MailService 설정
Spring Boot에서는 `JavaMailSender`를 이용하여 이메일을 전송할 수 있습니다. 아래는 `JavaMailSender`를 사용하여 이메일을 보내는 `MailService` 클래스의 예시입니다.
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.mail.MessagingException; import org.springframework.mail.internet.MimeMessage; import org.springframework.stereotype.Service; @Service public class MailService { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true); messageHelper.setTo(to); messageHelper.setSubject(subject); messageHelper.setText(text, true); // HTML 이메일로 전송 javaMailSender.send(mimeMessage); } }
4. 이메일 발송 테스트
이제 이메일을 보내는 메서드를 호출하여 실제 이메일을 발송할 수 있습니다. 아래는 `MailService`를 사용하여 이메일을 보내는 테스트 코드입니다:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class EmailTestRunner implements CommandLineRunner { @Autowired private MailService mailService; @Override public void run(String... args) throws Exception { String to = "recipient@example.com"; String subject = "테스트 이메일"; String text = "안녕하세요!이것은 Spring MailService를 사용하여 보낸 테스트 이메일입니다."; mailService.sendEmail(to, subject, text); System.out.println("이메일 전송 완료!"); } }
5. 결론
Spring의 MailService를 사용하면 JavaMail API를 직접 사용할 필요 없이 간편하게 이메일을 발송할 수 있습니다. 이메일 설정과 서비스 클래스를 구성한 후, `JavaMailSender`를 사용하여 손쉽게 이메일을 전송할 수 있습니다.