새소식

Java/Spring

Spring - Gmail로 메일 발송 기능 구현

  • -

개요

프로젝트 진행 중 메일 발송 기능 구현이 필요했는데 자주 사용되는 코드라 귀찮음을 무릅쓰고 포스팅한다.

gmail 앱 비밀번호 발급과 LOC_GAMIL_USERNAME, LOC_GAMIL_PASSWORD 환경변수 설정이 필요하다.

gmail 앱 비밀번호 발급 내용은 잘 정리되어 있는 다른 분의 글을 인용한다.

 

Google - Gmail SMTP 사용을 위한 세팅

Google - Gmail SMTP 사용을 위한 세팅 G메일에서 제공하는 SMTP를 사용하여 메일발송을 해야 하는 경우가 있습니다. 보통 자체 서버를 운용하는 게 아니라, 웹호스팅 등을 사용하고 있는 경우라면 SMTP

kincoding.com

 

만약 구글 계정 사이트에서 앱 비밀번호 설정 페이지가 보이지 않는다면 구글 계정 사이트에서 아래 이미지처럼 검색하면 쉽게 찾을 수 있다.


gradle

// 메일 발송
implementation 'org.springframework.boot:spring-boot-starter-mail'

application.yml

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: ${LOC_GAMIL_USERNAME}
    password: ${LOC_GAMIL_PASSWORD}
    properties:
      mail:
        smtp:
          auth: true
          timeout: 5000
          starttls:
            enable: true

EmailService.java


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

@Service
public class EmailService {
    // JavaMailSender를 주입받아 이메일을 보낼 수 있도록 설정
    @Autowired
    private JavaMailSender mailSender; // IntelliJ에서 보면 에러가 발생하지만 실행에 문제되지 않음

    /**
     * 간단한 이메일 메시지를 보내는 메소드
     *
     * @param to 수신자 이메일 주소
     * @param subject 이메일 제목
     * @param text 이메일 본문
     */
    public void sendSimpleMessage(String to, String subject, String text) {
        // SimpleMailMessage 객체 생성 및 설정
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to); // 수신자 설정
        message.setSubject(subject); // 제목 설정
        message.setText(text); // 본문 설정
        // 이메일 전송
        mailSender.send(message);
    }
}

ExamController.java

@RequiredArgsConstructor
public class UserController {
    private final EmailService emailService;

    /**
     * 인증번호 발송 메소드
     */
    @PostMapping("/authEmail")
    public ResponseEntity sendAuthEmail() {
        String email = "test@naver.com";

        // 메일 발송
        emailService.sendSimpleMessage(email, "subject", "body");
        return ResponseEntity.ok("인증 메일이 발송되었습니다.");
    }
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.