일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 격파르타장점
- javaJRE
- 격파르타비전공자
- java알고리즘
- java기본자료형
- 노베이스부트캠프
- 컴파일
- 격파르타합격후기
- 비전공자sqld
- javaJVM
- java최솟값구하기
- java set 출력
- 프로그래머스제일작은수
- 프로그래머스
- 항해15기
- java set 저장
- java map
- java list 저장
- java map 출력
- java 자료구조 활용
- java map 저장
- 격파르타후기
- 작은수제거하기
- java알고리즘문제풀이
- java참조자료형
- sqld자격증합격
- 코딩부트캠프후기
- java list 출력
- 인터프린터언어
- 항해99후기
- Today
- Total
코딩과 결혼합니다
[Game_Crew] 트러블슈팅 : 이메일 인증 완성 본문
문제 jakarta.mail.MessagingException: Could not connect to SMTP host: smtp.naver.com, port: 587;
메일 서버 연결에 실패. SMTP 호스트 smtp.naver.com의 587에 연결할 수 없다는 내용이다. javax.net.ssl.SSLException: Unsupported or unrecognized SSL message라는 예외도 함께 발생 하였다.
메일 서버와의 연결이 잘못되었거나, 네트워크 연결 문제, 또는 SSL 인증서 관련 문제 등이 원인일 수 있다.
원인 ssl 인증 서버 주소 잘못 기입
@Configuration
@PropertySource("classpath:application.properties")
public class MailConfig {
@Value("${spring.mail.username}")
private String id;
@Value("${spring.mail.password}")
private String password;
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.port}")
private int port;
@Bean
public JavaMailSender javaMailService() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(host); // smtp 서버 주소
javaMailSender.setUsername(id); // 설정(발신) 메일 아이디
javaMailSender.setPassword(password); // 설정(발신) 메일 패스워드
javaMailSender.setPort(port); //smtp port
javaMailSender.setJavaMailProperties(getMailProperties()); // 메일 인증서버 정보 가져온다.
javaMailSender.setDefaultEncoding("UTF-8");
return javaMailSender;
}
private Properties getMailProperties() {
Properties properties = new Properties();
properties.setProperty("mail.transport.protocol", "smtp"); // 프로토콜 설정
properties.setProperty("mail.smtp.auth", "true"); // smtp 인증
properties.setProperty("mail.smtp.starttls.enable", "true"); // smtp starttls 사용
properties.setProperty("mail.debug", "true"); // 디버그 사용
properties.setProperty("mail.smtp.ssl.trust","smtp.mailplug.co.kr"); // ssl 인증 서버 주소
properties.setProperty("mail.smtp.ssl.enable","true"); // ssl 사용
return properties;
}
}
MailConfig 클래스로 메일 전송을 담당하고 있다.
javaMailService() 메서드는 JavaMailSenderImpl 객체를 생성하고, SMTP 서버 주소, 사용자 아이디, 패스워드, 포트 등을 설정하여 JavaMailSenderImpl 객체를 반환한다.
getMailProperties() 메서드는 메일 전송에 필요한 프로퍼티를 설정한다.
이 곳에서 SMTP 프로토콜, SMTP 인증, SMTP starttls 사용 여부, 디버그 사용 여부, SSL 인증 서버 주소, SSL 사용 여부 등을 설정하고 있는 것이다.
나는 이 부분을 제대로 보지 않고 프로퍼티즈에 아래와 같이 설정해 두었으므로 왜 문제가 일어나는지 이해를 하지 못했다.
aplication.propertise
spring.mail.host=smtp.naver.com
spring.mail.port=465
spring.mail.username=
spring.mail.password=
spring.mail.properties.debug=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.trust=smtp.naver.com
properties.setProperty("mail.smtp.ssl.trust","smtp.mailplug.co.kr"); // ssl 인증 서버 주소
나는 지금 인증 서버 주소를 naver를 사용하고 있는데 여기는 mailplug.co.kr 로 설정되어 있다. 그래서 네이버 메일과 연동되지 않았던 것이다.
즉, 프로퍼티즈에 굳이 저 내용을 적어봤다 아무 쓸모가 없었던 것이고 여기 설정을 제대로 해줬어야 했던 것이다.
해결 ssl 인증 서버 주소 변경
properties.setProperty("mail.smtp.ssl.trust","smtp.naver.com");
잘 오고 있다. 그런데 궁금한 점이 있다. 저렇게 URL에 아이디가 노출되는게 좋지 않을 것 같아서 RequestBody로 보내려 하였으나 JSON 파싱 오류가 발생하여 이메일 주소에 제어 문자나 공백이 추가되는 문제가 발생하였다. 왜 이런 문제가 생기는지 알아봐야겠다.
'코딩과 매일매일♥ > Game_Crew' 카테고리의 다른 글
[Game_Crew] WebSocket으로 1대1 채팅기능 구현하기(1) - 적용x (0) | 2023.11.01 |
---|---|
[Game_Crew] 리팩토링 + 트러블슈팅 : 이메일 인증 코드 리팩토링 (0) | 2023.10.31 |
[Game_Crew] 유저 평점 기능 (0) | 2023.10.27 |
231026 - [Game_Crew]트러블슈팅 : CORS 설정하기 (0) | 2023.10.26 |
231025 - [Game_Crew]리팩토링 : Spring Security JWT 로그인 (0) | 2023.10.25 |