SpringBoot 메 일 보 내기 기능 인증 코드 5 분 만 료
7208 단어 springBoot우편물 을 발송 하 다
자신 이 오랫동안 바 이 두 를 하 다가 마침내 성공 하 였 으 니,여기에 과정 을 기록 해 보 자.
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();
}
}
})
거의 다 완성!이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springBoot dubbo junit 유닛 테스트의지 하 다 spring boot 시작 클래스 유닛 테스트 클래스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.