Spring boot Gmail 연동하여 stmp로 메일보내기

2024. 8. 14. 17:12Java/Spring Boot

Maven

		<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
		<dependency>
		    <groupId>javax.mail</groupId>
		    <artifactId>javax.mail-api</artifactId>
		    <version>1.6.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
		<dependency>
		    <groupId>com.sun.mail</groupId>
		    <artifactId>javax.mail</artifactId>
		    <version>1.6.2</version>
		</dependency>

Properties 설정

Properties props = System.getProperties();	

# 공통
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.ssl.trust", "smtp.gmail.com");	// "*"도 가능

# ssl인 경우
props.put("mail.smtp.port", 465);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.enable", "true");

# tls인 경우
props.put("mail.smtp.port", 587);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.protocols", "TLSv1.2"); // 지원하는 TLS 다 가능

javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. For more information

'보안 수준이 낮은 앱 액세스' 액세스가 거부되어서 발생한 에러

App password를 설정해줘야 함

그러기 위해서는 2단계 인증이 허용되어 있어야 함

계정 > 보안 > 2단계 인증 > 하단의 '앱 비밀번호' 메뉴

'앱 비밀번호' 메뉴가 없는 경우, 계정 상단의 검색에서 '앱 비밀번호' 검색

사용할 앱 이름 등록하고, 핸드폰 인증하면 비밀번호가 생성됨