public class TempPwdGenerator { //임시 비밀번호 생성 클래스
private static final String CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final int pwd_length = 10; //임시 비밀번호 길이
public static String generateTempPasswd() {
SecureRandom random = new SecureRandom();
StringBuilder sb = new StringBuilder(pwd_length);
for (int i = 0; i < pwd_length; i++) {
int index = random.nextInt(CHAR.length());
sb.append(CHAR.charAt(index));
}
return sb.toString();
}
}
Controller
@Controller
public class EmailController {
@Autowired
private EmailService emailService;
@Autowired
private UserService userService;
@PostMapping("/user/findPW")
public String sendEmail(@RequestParam String email, @RequestParam String userid,
@RequestParam String username, Model model){
if(userService.findPasswd(userid, username, email)){
model.addAttribute("sendEmail", "임시 비밀번호를 이메일로 전송했습니다.");
String tempPWD = TempPwdGenerator.generateTempPasswd(); //tempPWD 에 임시비밀번호 저장
emailService.sendTempPasswd(email, tempPWD); //이메일로 임시 비밀번호 송신
userService.modifyPasswd(userid, username, email, tempPWD);
}
else{
model.addAttribute("error", "입력하신 정보는 존재하지 않습니다.");
}
return "findPwd";
}
}
Service
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}") //application.properties 에 있는 spring.mai.username 부분의 값을 가져옴
private String fromEmail;
public void sendTempPasswd(String toEmail, String tempPasswd){
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(toEmail);
message.setSubject("임시 비밀번호 발급"); //이메일 제목
message.setText("안녕하세요 요청하신 임시 비밀번호는 다음과 같습니다 : " + tempPasswd); //이메일 내용
message.setFrom(fromEmail);
javaMailSender.send(message);
}
}