비밀번호 찾기 로직을 구현하다가 이메일 보내기 기능이 필요해졌다.
여러 플랫폼들도 그러하듯이, 비밀번호 찾기 서비스를 사용하면 새 비밀번호를 설정하도록 하게 한다. 또는 약간 옛날 방법인 듯 하지만 임시 비밀번호를 발급해주기도 한다.
나는 우선 후자의 방법으로 기능을 구현해보기로 했다. 따라서 고객에게 임시 비밀번호를 담은 이메일을 전송하는 기능이 필요해졌다.
방법을 찾아보니 JavaMailSender라는 것이 존재했다. 이름과 같이 자바에서 이메일을 전송해주는 인터페이스이고 구현체도 이미 존재했다.
사용방법도 (생각했던 것에 비하면) 놀라울 정도로 쉽고 간단했다. (여기서는 네이버 메일을 사용함)
약술하자면
1. 우선 build.gradle에 JavaMailSender라는 Dependency를 추가해준다.
2. 네이버 메일의 환경설정에서 SMTP관련설정을 해주고, 네이버 메일 서버명과 포트정보를 확인한다.
3. JavaMailSender를 Configuration클래스에서 빈으로 등록해준다.
4. 원하는 메일을 전송하는 메서드를 가진 MailService 인터페이스를 만든다.
5. 3에서 빈으로 등록한 JavaMailSender를 이용해 4의 MailService의 메서드를 구현해준다.ex) public void sendNewPasswordMail(String userEmail, String newPassword) throws Exception{ //메세지 생성 후 전송하는 코드 };
- 5에서 구현한 메일보내기 메서드를 사용하고자하는 클래스에서, MailService 인터페이스를 주입받고 사용하면 끝!
자세한 내용은 다음 링크를 참고바람
https://velog.io/@zxzz45/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0
처음으로 다른 플랫폼 서비스를 내 프로젝트에 연결해보게 되었는데 진짜 너무 신기하고 재밌었다. 처음 성공했을 때 진짜 이게 되네 싶었다.ㅋㅋ 빨리 필수 기능을 마저 완성하고 chatgpt도 도입해보고 싶다.
발송한 메일을 받은 모습

이 비밀번호를 postman에 입력 후 전송하여 로그인을 요청하니 jwt 토큰까지 성공적으로 반환되었다.
여기서 이 프로젝트의 메일 발송 계정을 어떻게 할지 내일 회의에서 의논해보아야 겠다.
그리고 임시로 <\h1>태그랑 <\br>로 메일 형식을 대충 만들긴 했는데 이것도 마저 해결해야 할 듯 하다.