본문 바로가기
Framework/Spring Boot

Spring boot 이메일 인증 코드 보내기 설정 및 기능 구현(구글)

by tpleehan 2022. 12. 15.

대체로 회원가입 과정 중 이메일 인증번호를 발송해서 인증번호를 작성하거나 또는 특정 URL 링크를 발송해서 해당 링크를 클릭하면 이메일 인증과 함께 회원가입 완료를 진행한다.

예전에 구글 이메일 인증을 했을 때는 발송이 잘 되었는데 최근 이메일 발송이 안되는 문제점이 생기게 되었다.

참고 링크: https://support.google.com/accounts/answer/6010255

보안 수준이 낮은 앱의 액세스를 통해 smtp를 사용하도록 했지만 2022년 5월 30일부터 더 이상 지원하지 않는 다는 내용을 찾게 되었다. 다른 이메일을 설정해서 사용하면 되지만 기존에 사용하던 구글 이메일을 계속 유지하고자 블로그를 작성하게 되었다.

1. SMTP 계정 설정

먼저 구글 계정에서 보안을 선택하고 2단계 인증 사용으로 활성화 후 앱 비밀번호를 설정을 선택한다.

앱 비밀번호를 설정할 때 메일 / Windows 컴퓨터를 선택하고 생성 버튼을 클릭한다.

Windows 컴퓨터용 앱 비밀번호 16자리가 제공되고, 비밀번호를 복사해두거나 보관하면 된다. (확인을 누르면 해당 비밀번호를 다시 확인할 수 없게 되었다. 삭제만 되고 다시 생성해야 되는 번거로움이 있는 것 같다.)

Gmail로 이동하고 설정(톱니바퀴)를 눌러서 모든 설정 보기를 클릭하면 해당 페이지가 나타난다.

전달 및 POP/IMAP 카테고리를 선택하고 POP 다운로드에서 모든 메일에 POP 사용하기를 선택한다.
그리고 기본적으로 IMAP 액세스에 IMAP 사용이 선택되어 있지만 한번 더 확인해본다.
POP 다운로드 부분에 상태: POP 사용 안함으로 되어 있는데, 변경사항 저장을 하면
상태: 모든 메일에 대해 POP가 사용 설정되어 있습니다. 로 변경된다.
IMAP 액세스 부분도 추후에 어떻게 변경될지 모르지만
상태: IMAP를 사용할 수 있습니다. 부분도 잘 되어 있는지 확인한다.

2. build.gradle 설정

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-mail'
}

3. yml 설정

spring:
  mail:
    # google smtp 설정
    host: smtp.gmail.com
    port: 587
    username: #설정한 google 계정
    password: #16자리 앱 비밀번호
    properties:
      mail:
        smtp:
          starttls:
            enable: true
          auth: true

Postman을 사용해서 확인할 수 있지만 IntelliJ에서 제공하는 .http를 실행해서 확인을 진행했다.

Response code는 200으로 정상적인 것은 확인이 되었다. 그래도 제대로 구현이 됐는지 검증을 해본다.

데이터베이스에 값도 잘 들어간 것을 확인할 수 있다.

구현한 회원가입 Email 인증 API도 링크로 제공하고 있는 것을 확인할 수 있다.

댓글