최원종의 개발 블로그

V15-2 이메일 인증 기능 추가 사전준비 및 프로그램 흐름 본문

Spring boot 입문/Spring boot 입문 -1

V15-2 이메일 인증 기능 추가 사전준비 및 프로그램 흐름

chl6698 2026. 6. 18. 12:45

Google 앱 비밀번호 발급 사전 준비

일반 구글 비밀번호로는 접근이 불가능

1. Google 계정 관리 접속 → 보안 탭
2. 2단계 인증이 켜져 있어야 합니다 (안 켜져 있다면 설정 필요)
3. 검색창에 "앱 비밀번호" 검색
4. 앱 이름에 SpringBootBlog 입력 후 만들기
5. 생성된 16자리 비밀번호를 복사해서 메모장에 저장해둡니다 (이게 SMTP 비밀번호입니다!)

application-dev.yml

  spring:
	  # 이메일 발송 설정
	  mail:
	    # SMTP 서버 호스트 주소 (Google의 경우 smtp.gmail.com 고정)
	    host: smtp.gmail.com
	    # SMTP 서버 포트 번호 (587: TLS(Transport Layer Security) 암호화 통신 전용 포트)
	    # 인터넷으로 정보를 주고받을 때 정보를 암호화해서 아무도 훔쳐보지 못하게 하는 보안 기술
	    port: 587
	    # 발신자 계정 (본인의 전체 Gmail 주소)
	    username: insertvalue2@gmail.com
	    # 발신자 인증 키 (Google 보안 설정에서 생성한 16자리 앱 비밀번호)
	    # 주의: 일반 구글 로그인 비밀번호가 아님
	    password: kvjmvmnngslgmtpz
	    # JavaMail 추가 속성 설정
	    properties:
	      mail:
	        smtp:
	          # SMTP 서버 인증 활성화 (ID/PW 검사 여부)
	          auth: true
	          # STARTTLS 설정 (보안 연결)
	          starttls:
	            # 비암호화 연결을 암호화 연결(TLS)로 승격 활성화
	            enable: true
	            # TLS 연결을 강제할지 여부 (보안상 true 권장)
	            required: true
	          # [타임아웃 설정 - 서버 간 통신 기준]
	          # 소켓 연결 제한 시간 (단위: 밀리초)
	          # 서버에 접속을 시도할 때 5초(5000ms) 동안 응답이 없으면 연결 실패 처리
	          connectiontimeout: 5000
	          # 소켓 읽기 제한 시간 (단위: 밀리초)
	          # 메일 전송 요청 후 서버로부터 응답(Response)을 기다리는 최대 시간
	          timeout: 5000
	          # 소켓 쓰기 제한 시간 (단위: 밀리초)
	          # 데이터를 서버로 전송할 때 걸리는 최대 허용 시간
	          writetimeout: 5000

의존성 추가

// 이메일 발송 라이브러리
    implementation 'org.springframework.boot:spring-boot-starter-mail'

 


프로그램 흐름 확인

 

1. 회원가입 화면


2. 이메일 인증번호 전송

 


3. 사용자가 입력한 메일 주소에 수신되는 값

 


4. 인증번호 입력(잘못 입력된 경우)

올바른 인증번호 입력한 경우 인증 완료


5. 이메일 인증 없이 회원가입 하려는 경우