SpringBoot 메 일 보 내기 기능 인증 코드 5 분 만 료

springBoot 에서 메 일(인증 코드,5 분 만 료)을 보 내 는 것 은 매우 상세 합 니 다.참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
자신 이 오랫동안 바 이 두 를 하 다가 마침내 성공 하 였 으 니,여기에 과정 을 기록 해 보 자.
1.메 일 선택(여기 163 메 일 선택)
우선 홈 페이지 에 로그 인하 여 설정 에서 POP 3/SMTP 서 비 스 를 엽 니 다.

application.yaml 에 설정

주의해 야 할 것 은 바로 이곳 의 password 는 비밀번호 가 아니 라 권한 수여 코드 입 니 다!!!qq 메 일 로 host 를 smtp.qq.com 으로 바 꾸 면
2.인증 코드 에 대한 도구 클래스

 private static final String SYMBOLS = "0123456789";
 /**
  * Math.random         ,                  ,          ,            。
  *  SecureRandom     ,                  ,         ,           ,            ,                   。
  */
 private static final Random RANDOM = new SecureRandom();

 public static String generateVerCode() {
  char[] nonceChars = new char[6];
  for (int i = 0; i < nonceChars.length; i++) {
   nonceChars[i] = SYMBOLS.charAt(RANDOM.nextInt(nonceChars.length));
  }
  return new String(nonceChars);
 }

 /**
  *          
  */
 public static int getMinute(Date fromDate, Date toDate) {
  return (int) (toDate.getTime() - fromDate.getTime()) / (60 * 1000);
3.서비스 모듈

 /**
  *           
  * @param sender     
  * @param mailSender spring  
  * @param receiver     
  */
 AdvanceResponse getCode(String sender,JavaMailSenderImpl mailSender,String receiver);
 /**
  *     
  */
 AdvanceResponse addUser(User user,String verCode);
AdvanceResponse 는 자신 이 봉 인 된 반환 대상 이 므 로 무시 할 수 있 습 니 다.

/**
 *    
*/
private String code;
/**
 *     
*/
private Date sendTime;
 @Override
 @Async
 public AdvanceResponse getCode(String sender, JavaMailSenderImpl mailSender, String receiver) {
  SimpleMailMessage message = new SimpleMailMessage();
  message.setSubject("   ");//      
  code = VerCodeGenerateUtil.generateVerCode();
  sendTime = new Date();
  message.setText("     ,  :
" + "
:" + code + ", 5 , 。( )
" + "
, 。
( , )"); // message.setFrom(sender);// message.setTo(receiver);// mailSender.send(message);// return AdvanceResponse.successResponse(); } @Override public AdvanceResponse addUser(User user, String verCode) { Date date = new Date(); // if (VerCodeGenerateUtil.getMinute(sendTime, date) > 5) { return AdvanceResponse.failedResponse(" !!!"); } if (!verCode.equals(code)) { return AdvanceResponse.failedResponse(" !!!"); } user.setRole(0); user.setCreateTime(date); user.setUpdateTime(date); userDao.insert(user); code = null; return AdvanceResponse.successResponse(); }
@Async 는 이 보 를 표시 합 니 다.메 일이 발송 되 지 않 았 을 때 되 돌아 갈 수 있 습 니 다.너무 오래 기다 리 지 않 아 도 됩 니 다.전체 설정 클래스 에@EnableAsync 주 해 를 추가 해 야 유효 합 니 다.
4.controller 모듈

@Autowired
 private UserService userService;
 @Autowired
 private JavaMailSenderImpl mailSender;
 @Value("${spring.mail.username}")
 private String sender;
 
 /**
  *           
  */
 @GetMapping("/verCode")
 public AdvanceResponse verCode(String receiver) {
  return userService.getCode(sender, mailSender, receiver);
 }

 /**
  *     
  */
 @PostMapping("/addUser")
 public AdvanceResponse addUser(User user, String sender, JavaMailSenderImpl mailSender, @RequestParam("verCode") String verCode) {
  return userService.addUser(user,verCode);
 }
기본적으로 백 엔 드 가 완성 되 었 으 니 전단 을 살 펴 보 자.
5.전단 인터페이스

 <div class="layui-form-item">
    <label for="email" class="layui-form-label">
     <span class="x-red">*</span>  
    </label>
    <div class="layui-input-inline">
     <input type="email" id="email" name="email" required="" lay-verify="email"
       autocomplete="off" class="layui-input">
    </div>
    <div class="layui-form-mid layui-word-aux">
     <span class="x-red" id="emailMsg"></span>
    </div>
    <button type="button" class="layui-btn" id="code">     </button>
   </div>
   <div class="layui-form-item">
    <label for="verCode" class="layui-form-label">
     <span class="x-red">*</span>   
    </label>
    <div class="layui-input-inline">
     <input type="text" id="verCode" name="verCode" required=""
       autocomplete="off" class="layui-input">
    </div>
    <div class="layui-form-mid layui-word-aux">
     <span class="x-red" id="verCodeMsg"></span>
    </div>
</div>
전단 에 layui 를 사 용 했 습 니 다.input 폼 만 주목 하면 됩 니 다.
다음은 js 코드.

 //     
 $('#code').click(function () {
  const email = $('#email').val();
  const myReg = /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
  if (email === null || email.length === 0) {
   layer.msg('      !', {time: 1500, icon: 5, shift: 6});
   return false;
  }
  if (!myReg.test(email)) {
   layer.msg('       !', {time: 1500, icon: 5, shift: 6});
   return false;
  }
  $.ajax({
   type: 'GET',
   url: 'user/verCode',
   data: {
    'receiver': email
   },
   beforeSend: function () {
    loading = layer.msg('   ', {icon: 16})
   },
   success: function () {
    layer.close(loading);
   }
  })
 });
 //      ,       
 $.ajax({
   type: 'POST',
   url: 'user/addUser',
   data: formData,
   cache: false,   //    
   processData: false,  // jQuery          
   contentType: false,  // jQuery     Content-Type   
   beforeSend: function () {
    loading = layer.msg('   ', {icon: 16})
   },
   success: function (result) {
    if (result.status === 0) {
     layer.msg(result.msg, {time: 1500, icon: 5, shift: 6});
    } else {
     layer.close(loading);
     xadmin.close();
    }
   }
  })
거의 다 완성!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기