Java/환경구성

[Java] Google Gmail SMTP 환경 설정 방법

adjh54 2024. 11. 11. 22:51
반응형
해당 글에서는 Google Gmail을 사용하기 위한 SMTP 환경 설정 방법에 대해 알아봅니다


1) Google SMTP 설정 목적


💡 Google SMTP 설정 목적

- Java 애플리케이션에서 이메일을 안전하고 효율적으로 보내기 위함입니다.
- Java 애플리케이션에서는 클라이언트에게 받은 이메일 전송자(Sender)가 되어서 다른 클라이언트에게 메일을 전달하는 역할을 수행합니다.
- 이 과정에서 전달받은 메시지를 SMTP 모듈이 메시지를 SMTP 서버로 전송하는 과정을 처리합니다.
- 해당 부분에서 SMTP 서버의 역할을 하는 Google Mail을 설정하는 방법에 대해 알아봅니다.
장점 설명
안전한 이메일 전송 Google의 보안 프로토콜을 활용하여 이메일을 암호화하고 안전하게 전송합니다.
높은 신뢰성 Google의 안정적인 서버를 통해 이메일 전송의 신뢰성을 높입니다.
스팸 방지 Google의 스팸 필터링 시스템을 활용하여 보내는 이메일이 스팸으로 분류될 가능성을 줄입니다.
대량 이메일 지원 대규모 이메일 발송이 필요한 경우에도 효과적으로 처리할 수 있습니다.

 

1. 송신자(Sender)의 SMTP 프로토콜을 통한 메일 전송 과정 / 수신자(Recipient)의 IAMP / POP3를 통한 메일 수신 과정


💡 송신자(Sender)의 SMTP 프로토콜을 통한 메일 전송 과정

1. 메일 작성 및 전송

- 이메일 전송자(Sender)는 클라이언트에게 메시지를 작성하고 ‘보내기’를 클릭합니다.

2. SMTP 클라이언트
- 이메일 클라이언트의 SMTP 모듈이 메시지를 SMTP 서버로 전송합니다.

3. 발신자의 SMTP 서버(Sender’s Mail Server)

- 메시지를 받아 수신자의 도메인을 확인하고, DNS를 통해 수신자의 메일 서버를 찾습니다.

4. 수신자 SMTP 서버 전달
- 발신자의 SMTP 서버가 수신자의 SMTP 서버로 메시지를 전달합니다.

5. 메일박스 저장
- 수신자의 SMTP 서버(Recipient’s Mail Server)가 메시지를 받아 수신자의 메일박스에 저장합니다.

💡 수신자(Recipient)의 IAMP / POP3를 통한 메일 수신 과정

1. 메일 확인 요청

- 수신자가 이메일 클라이언트를 열어 새 메일을 확인합니다.

2. 서버 연결
- 클라이언트가 IMAP 또는 POP3 프로토콜을 사용하여 메일 서버에 연결합니다.

3. 메시지 검색 및 다운로드
- POP3의 경우: 서버에서 메시지를 다운로드하고 일반적으로 서버에서 삭제합니다.
- IMAP의 경우: 서버와 클라이언트 간 메시지를 동기화하고, 메시지는 서버에 유지됩니다.

4. 메시지 표시
- 다운로드되거나 동기화된 메시지가 사용자의 이메일 클라이언트에 표시됩니다.

https://www.cloudns.net/blog/smtp-simple-mail-transfer-protocol-explained/

 

 

2) Google Gmail SMTP 활성화 과정 -1 : IMAP 활성화


 

1. Gmail > 설정 > ‘모든 설정 보기’ 버튼을 누릅니다.


 

 

2. 설정 페이지 내에서 ‘전달 및 POP/IMAP’ 탭 선택 > IMAP 액세스를 사용으로 선택하고 ‘변경사항 저장’ 버튼을 누릅니다.


 

3. 아래와 같이 본인 인증 페이지가 출력되고 ‘계속’ 버튼을 누릅니다.(2차 본인 인증 과정)


 

 

4. 인증을 완료하면 아래와 같이 상태가 변경됨을 확인할 수 있습니다.


 

 

 

3) Google Gmail SMTP 활성화 과정 -2 : SMTP 앱 비밀번호 발급


 

1. 프로필 선택 > Google 계정 관리를 선택합니다.


 

 

 

2. 보안 탭 > 2단계 인증을 선택하여 인증을 수행합니다.


 

 

 

3. 인증을 마친 뒤 ‘앱 비밀번호’로 검색하여 선택합니다.


 

 

4. 앱 이름을 작성하고 만들기를 선택합니다.


 

 

5. 아래와 같이 앱 비밀번호가 생성이 됩니다. 앱 비밀번호는 복사를 해둡니다.


 

 

6. 추후 해당 속성 값에 추가를 해줍니다.


 

# properties 파일 형태
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=xxxxxxxx@gmail.com  
spring.mail.password=xxxx xxxx xxxx xxxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

# or

# yaml/yml 파일 형태
spring:
  mail:
    host: smtp.gmail.com          # 구글 SMTP 서버 주소
    port: 587                     # 구글 SMTP 포트 번호
    username: xxxxxxxx@gmail.com  # 사용자 이메일
    password: xxxx xxxx xxxx xxxx # 사용자 앱 비밀번호
    properties:
      mail:
        smtp:
          auth: true              # 사용자 인증 여부
          timeout: 5000           # 이메일 전송 타임아웃 시간
          starttls:
            enable: true          # TLS를 통해 안전한 통신 사용 여부

 

 

4) 결과 확인


💡결과 확인

- 해당 프로토콜을 이용하여서 메일을 API 호출을 통해서 전송합니다.

 

💡 아래와 같이 Gmail을 통한 메일 전송이 잘됨을 확인하였습니다.

 

 

💡 [참고] 해당 소스코드는 아래에서 확인이 가능합니다.
 

blog-codes/spring-boot-mail at main · adjh54ir/blog-codes

Contributor9 티스토리 블로그 내에서 활용한 내용들을 담은 레포지토리입니다. Contribute to adjh54ir/blog-codes development by creating an account on GitHub.

github.com

 

 

 

 

 

오늘도 감사합니다 😀

 

반응형