[Spring] 프로젝트 / 비밀번호 찾기 & 네이버 이메일 발송
- 목차
● Mac
● Java21
● Spring 3.2.2
● 이클립스
● Oracle SQL
로그인 회원가입 이미 구현되어있는 상태에 비밀번호 찾기 기능을 추가 하게 되었습니다.
회원가입할때 만든 이메일, name를 입력해서 2개다 일치하는지 확인합니다
두 정보가 이미 등록되어있고 일치한다면 메일로 임시비밀번호를 발송합니다
UserService
// userEmail check
public boolean userEmailCheck (String userEmail, String userName){
SiteUser user = userRepository.findByEmail(userEmail);
return user != null && user.getUsername().equalsIgnoreCase(userName);
}
MailDTO.java
private String address;
private String title;
private String message;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
SendEmailService.java
private final JavaMailSender mailSender;
private final PasswordEncoder passwordEncoder;
private static final String FROM_ADDRESS = "보내는 이메일";
public MailDTO createMailAndChargePassword(String userEmail, String userName){
String str = getTempPassword();
MailDTO dto = new MailDTO();
dto.setAddress(userEmail);
dto.setTitle("임시비밀번호 안내 이메일 입니다.");
dto.setMessage("안녕하세요. 임시 비밀번호 안내 관련 이메일 입니다.\n"
+ "회원님의 임시 비밀번호는 [ " + str + " ] 입니다.\n"
+ "로그인 후에 비밀번호를 변경을 해주세요.");
updatePassword(str, userEmail);
return dto;
}
// 임시 비밀번호 업데이트
public void updatePassword (String str, String userEmail){
String pw = passwordEncoder.encode(str);
Long id = userRepository.findByEmail(userEmail).getId();
userRepository.updatePw(pw,id);
}
// 임시 비밀번호 생성
public String getTempPassword(){
char[] charset = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
String str = "";
int idx = 0;
for(int i=0; i<10; i++){
idx = (int) (charset.length * Math.random());
str += charset[idx];
}
return str;
}
// 메일 보내기
public void mailSend (MailDTO mailDTO){
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(mailDTO.getAddress());
message.setSubject(SendEmailService.FROM_ADDRESS);
message.setText(mailDTO.getMessage());
message.setFrom("보내는 이메일");
message.setReplyTo("보내는 이메일");
mailSender.send(message);
}
Controller.java
// Email + name 일치하는지
@GetMapping("/check/findPw")
public @ResponseBody Map<String,Boolean> pwFind (@RequestParam("userEmail") String userEmail, @RequestParam("userName") String userName) {
Map<String, Boolean> json = new HashMap<>();
boolean pwFindCheck = userService.userEmailCheck(userEmail, userName);
json.put("check", pwFindCheck);
return json;
}
// 등록된 이메일로 발송 + 비밀번호 임시 변경
@PostMapping("/check/findPw/sendEmail")
public @ResponseBody void sendEmail(String userEmail, String userName){
MailDTO dto = ms.createMailAndChargePassword(userEmail, userName);
ms.mailSend(dto);
}
|
#mail
spring.mail.host=smtp.naver.com
spring.mail.port=465
spring.mail.username= (보내는 이메일)
spring.mail.password= (비밀번호)
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.enable=true
|
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

'코딩 > 프로젝트' 카테고리의 다른 글
| [Spring] 프로젝트 / 마이페이지 회원정보 구현하기 (0) | 2024.02.27 |
|---|