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. 메시지 표시
- 다운로드되거나 동기화된 메시지가 사용자의 이메일 클라이언트에 표시됩니다.
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을 통한 메일 전송이 잘됨을 확인하였습니다.
💡 [참고] 해당 소스코드는 아래에서 확인이 가능합니다.
오늘도 감사합니다 😀
반응형