본문 바로가기
개발 지식/Spring Framework

[Spring] 구글 smtp 서버를 활용한 메일 보내기

by 에르주 2023. 1. 15.
반응형

사이드 프로젝트 중 메일 인증을 통한 유저 회원가입 구현이 필요하여 구글 메일 서버를 이용한 메일 발송에 대해 적어보고 후에 잊어버렸을 경우 다시 보기 위해 정리하고자 한다. 

 

회원 인증에는 실명인증 및 인증서 인증 여러가지가 있는데 소규모 프로젝트에서는 메일 인증이 제일 간단한 것 같다.

 

Spring을 활용하면 다음과 같이 간단히 설정을 진행할 수 있다. 

 

1. Application yml 작성하기 (https://support.google.com/a/answer/176600?hl=en)

spring:
  mail:
    protocol: smtp
    host: smtp.gmail.com
    port: 587
    username: ${user.name}
    password: $[user.password}
    default-encoding: utf-8
    properties:
      mail:
        smtp:
          starttls:
            enable: true
          auth: true

 

2. username과 password 입력하기

 

username은 구글 가입 계정을 뜻하며 password는 구글 가입 계정의 비밀번호인 줄 알았으나

password는 단순히 계정의 비밀번호가 아니었다. (앱 비밀번호였다.)

 

 

그럼 앱 비밀번호를 발급받아보자. 해당 사이트에 들어간 후 원하는 구글 계정을 로그인 한다.

https://myaccount.google.com/u/2/security?hl=ko&pageId=none 

 

Google 계정

보안 계정을 안전하게 보호하기 위해 보안 설정을 검토 및 조정하고 권장사항을 받아보려면 계정에 로그인하세요.

myaccount.google.com

 

보안 페이지를 보면 다음과 같이

"Google에 로그인"과 밑에 2단계 인증을 확인 할 수 있다.

 

google 로그인 설정 안했을 경우

 

2단계 인증

 

2단계 인증을 본인의 스마트폰이나 테블릿 등으로 진행하고 나면 앱 비밀번호를 설정할 수 있다.

앱 선택 그리고 기기선택을 설정한 후 생성을 누르게 되면

다음과 같이 앱 비밀번호가 자동으로 생성된 후 해당 비밀번호를 활용하여 진행하면 된다.

앱 비밀번호 생성

 

앱 비밀번호 생성 완료

 

생성된 앱 비밀번호를 application yml에 입력후 간단한 메일 전송 로직을 작성하여 실행하면 정상적으로 메일이 발송된다.

  fun sendAuthCode(address: String) {

        try {
            val code = generateAuthCode()
            val email = SimpleMailMessage()
            email.subject = "테스트 이메일 인증"
            email.text = "이메일 인증 코드는 ${code}입니다"
            email.setTo(address)
            sender.send(email)
        } catch (e: Exception) {
            logger.error("이메일 전송에 실패했습니다. ${e.message}")
            throw Exception("이메일 전송에 실패했습니다. ${e.message}")
        }
}

 

메일 발송 확인

 

끝.

반응형

댓글