smtp 서버를 구축하신다구여?
왜 스프링이랑 구글이 있는데 그런 수고를 하십니까?
구글로 메일 보내봅시다.
//메일
implementation 'org.springframework.boot:spring-boot-starter-mail'
gradle에 의존성 추가
spring:
mail:
host: smtp.gmail.com
port: 587
username: 보낼 이메일
password: 앱 접근 비번
properties:
mail:
smtp:
auth: true
starttls:
enable: true
application.yml도 고친다.
username은 당연히 구글 계정 (네이버면 네이버겠지?)
password는 구글 계정 보안에서 님이 설정한 비번이어야 한다.
구글 앱 비번 설정
보안 메뉴로 가서
앱 비밀번호를 만들자 난 이미 만들어 둠
이렇게 기타 앱으로 선택
이름을 만들어주면 16자리 문자열이 나온다.
그 친구를 yml에 적어주셈
yml로 나는 클라이언트 주소랑 뭐 이것저것 미리 추가 해둠
@PostMapping("/resetpwd")
public ResponseEntity resetPwdSendEmail(@RequestBody ResetPwdDto email) throws MessagingException {
UUID uuid = UUID.randomUUID();
log.info("비밀번호 재설정을 위한 메일 발송 로직 진입");
log.info("보낼 메일 주소 : {}", email);
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(email.getEmail());
mimeMessageHelper.setSubject("[파킹Go] 비밀번호 재설정 주소 안내");
StringBuilder sb = new StringBuilder();
sb.append("비밀번호 재설정을 위한 주소입니다. \n");
sb.append(secretCode.getClientUrl() + "/resetpwd/" + uuid + "\n");
sb.append("상기 주소로 접속하시어 비밀번호 재설정을 해주시기 바랍니다.");
mimeMessageHelper.setText(sb.toString(), true);
javaMailSender.send(mimeMessage);
return new ResponseEntity<>(HttpStatus.OK);
}
아직 미완성 코드임. 실은 저기서 uuid의 유효성 검증을 위한 작업도 해야한다.
일단 저렇게 해서 해봄.
send 시간이 꽤 걸리는 편이라 비동기로 실행하는 것이 좋아보임
아쉽게도 줄 바꿈이 안먹었다. 흠