(spring)사용자와 가까워 지고 싶어서.. ID/PW 찾기 및 변경

전성영·2022년 7월 8일
1

spring

목록 보기
19/31

spring을 공부하면서 메일 전송 쪽 기능을 구현해보고 싶어서 이 기능을 해봤다.
프론트가 한 분이셔서 이 기능이 들어갈 지는 모르겠지만 해보고 싶어서 해봄용

필요한 의존성

implementation 'org.springframework.boot:spring-boot-starter-mail'

이메일 설정(.properties)

비밀번호를 찾는 사용자들에게 메일을 보내줘야 하는데, 그 이메일에 대한 정보를 써준다.

특히 저 마지막줄에 있는 spring.mail.protocol=smtps 이 부분때문에 계속 고생했다.

저 친구를 안써주거나 smtp 에서 s 를 빠트리면

org.springframework.mail.MailSendException: Mail server connection failed; 
nested exception is javax.mail.MessagingException: 
Got bad greeting from SMTP host: smtp.naver.com,
port: 465, response: [EOF]

이러한 에러를 마주하게 된다.

여기까지 기본적인 세팅을 끝내놓은 후 SMTP를 사용하지 않는 ID 찾기부터 해보았다.

아이디 찾기

로직은 매우 간단했다. 회원가입할 때 작성했던 닉네임으로 memberRepository를 뒤진 후 그 값을 반환하는 것이다.

음.. 순조로워..
다음!

이메일 전송 & 비밀번호 찾기

먼저 private final JavaMailSender javaMailSender; 를 선언해준다.
JavaMailSender 를 타고타고 들어가보면

음...
mail 관련 친구들이 많이 보인다.

MimeMessageHelper를 선언하였다.
생성자의 두 번째 인자 true 는 멀티파트 메세지를 사용하겠다는 뜻 이라고 한다.

setFrom(발신자 메일 주소), setTo(수신인 주소), setSubject(제목), setText(메일 내용) 등이 있다.

setTo는 수신인 주소인데 member.getUsername() 을 넣어줬다.

그 밑에는 StringBuilder의 body 객체를 선언해서 .append() 를 통해 값을 넣어주고 마지막에 mimeMessageHelper.setText() 로 넣어줬다.

그렇게 되면

이런식으로 된다.
하지만 나는 사진도 넣고 싶고 그런데?? 어카지???

답은 있었다.

이런식으로 html을 직접 짜주면 된다!

content+= "<img src=\"https://drive.google.com/uc id=1SGWzVrlaSnIm_V95GgBvjdI56FvLn5hH\">";
이 이미지 링크는 구글 드라이브로 설정해주면 된다.

결과

주석되어있는 친구는 파일 첨부이다. txt도 가능하던데 신기하다.

무튼 저렇게 짜준 후 내 원래 목적인 비밀번호 변경은

String password = passwordEncoder.encode(pw);
member.pwUpdate(password);

인코딩을 해준 후 저장을 해주었다.

비밀번호 변경


비밀번호 변경 로직이다.
더러워도 어쩔 수 없,,,
BCryptPasswordEncoder 의 객체를 생성 후 .match()를 사용하여 json으로 넘어온 비밀번호와 인코딩되서 저장된 비밀번호를 비교한다.

너무 재밌는 기능이었고, 이게 개발을 하는 이유가 아닌가 싶다.
재밌어!!!!!!!!!!!!!!

profile
Slow and Steady

1개의 댓글

comment-user-thumbnail
2023년 1월 6일

에러 해결에 큰 도움 되었습니다! 잘 보고 갑니다! ㅎㅎ

답글 달기