日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot發送郵件功能 驗證碼5分鐘過期

瀏覽:16日期:2023-05-26 15:51:37

springBoot發送郵件(驗證碼,5分鐘過期)超級詳細,供大家參考,具體內容如下

自己百度了很久,終于成功了,這里記錄一下過程

1.選擇郵箱(這里選用163郵箱)

首先在網頁登錄在設置里面打開POP3/SMTP服務

SpringBoot發送郵件功能 驗證碼5分鐘過期

在application.yaml中配置

SpringBoot發送郵件功能 驗證碼5分鐘過期

要注意的就是這里的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.services模塊

/** * 發送驗證碼到指定郵箱 * @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('尊敬的用戶,您好:n' + 'n本次請求的郵件驗證碼為:' + code + ',本驗證碼5分鐘內有效,請及時輸入。(請勿泄露此驗證碼)n' + 'n如非本人操作,請忽略該郵件。n(這是一封自動發送的郵件,請不要直接回復)'); //設置郵件正文 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' name='email' required='' lay-verify='email' autocomplete='off' class='layui-input'> </div> <div class='layui-form-mid layui-word-aux'> <span id='emailMsg'></span> </div> <button type='button' 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' name='verCode' required='' autocomplete='off' class='layui-input'> </div> <div class='layui-form-mid layui-word-aux'> <span 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(); } } })

基本上全部完成!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
97精品国产| 国产精品国码视频| 亚洲精品黄色| 在线亚洲激情| 免费av一区二区三区四区| 成人影视亚洲图片在线| 麻豆精品国产91久久久久久| 国产高清精品二区| 久久精品国产免费| 国产aa精品| 蜜臀国产一区| 亚洲精品中文字幕乱码| 国产精品三上| 日韩一区二区三区免费视频 | 黄色成人91| 精品捆绑调教一区二区三区| 欧美一级精品| 蜜臀久久久99精品久久久久久| 久久这里只有精品一区二区| 久久电影tv| 国内激情久久| 日本不卡中文字幕| 精品国产成人| 亚洲精品福利电影| 欧美网站在线| 国产精品亚洲成在人线| 高清日韩欧美| 午夜亚洲福利在线老司机| 日本不卡一区二区| 天堂а√在线最新版中文在线| 日韩伦理福利| 亚洲精品乱码久久久久久蜜桃麻豆| **爰片久久毛片| 91久久国产| 久久国产人妖系列| 欧美午夜精品一区二区三区电影| 日韩精品一级| 亚洲最新无码中文字幕久久| 美国欧美日韩国产在线播放| 国模大尺度视频一区二区| 国产99亚洲| 久久免费影院| 欧美伊人久久| 日韩中文字幕亚洲一区二区va在线| 高清av一区| 在线精品一区二区| 日韩国产一区| 欧美激情91| 亚洲网址在线观看| 婷婷亚洲五月色综合| 国产精品毛片久久| 久久伊人亚洲| 国产精品日本一区二区三区在线| 首页欧美精品中文字幕| 三上悠亚国产精品一区二区三区| 7777精品| 欧美有码在线| 欧美日本不卡高清| 亚洲+小说+欧美+激情+另类| 亚洲精华国产欧美| 日本欧美国产| 精品亚洲成人| 国产一区二区三区四区| 欧美精品二区| 免费亚洲一区| 精品视频自拍| 日韩大片在线播放| 日韩三区免费| 亚洲性色av| 国产一区二区三区自拍| 五月天激情综合网| 噜噜噜躁狠狠躁狠狠精品视频| 激情久久中文字幕| 蜜桃视频欧美| 中文不卡在线| 偷拍亚洲精品| 亚洲精品大全| 91福利精品在线观看| 国产一区 二区| 91亚洲一区| 国产精品7m凸凹视频分类| 日韩午夜视频在线| 欧美日韩亚洲一区三区| 国产一区二区三区日韩精品| 国产aⅴ精品一区二区三区久久| 久久精品官网| 日韩午夜视频在线| 成人午夜毛片| 久久国产高清| 久久一区国产| 日韩国产一区二区三区| 午夜在线播放视频欧美| 日本成人手机在线| 精品国产精品国产偷麻豆| 欧美日韩精品免费观看视欧美高清免费大片 | 日本大胆欧美人术艺术动态| 欧美日韩亚洲一区三区| 日韩一区欧美| 国产欧美日韩影院| 福利欧美精品在线| 日韩精品一级二级| 国产日韩1区| 欧美久久精品一级c片| 日本欧美一区二区在线观看| 99精品视频精品精品视频| 久久国产视频网| 在线一区欧美| 国产亚洲一区二区手机在线观看| 日韩国产高清在线| 欧美va亚洲va日韩∨a综合色| 国产精品对白久久久久粗| 亚洲欧洲日本mm| 中文字幕高清在线播放| 日本欧美久久久久免费播放网| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产剧情一区二区在线观看| 亚洲免费观看| 欧美搞黄网站| 日韩高清中文字幕一区二区| 国产激情欧美| 国产麻豆一区二区三区精品视频| 日韩视频精品在线观看| 国产精品115| 日韩精品三区四区| 国产精品老牛| 久久最新视频| 免费黄网站欧美| 99xxxx成人网| 亚洲色诱最新| 丝袜a∨在线一区二区三区不卡| 国产一区二区中文| av一区在线| 亚洲国内欧美| 欧美1级日本1级| 欧美日韩国产在线一区| 私拍精品福利视频在线一区| 日本欧美不卡| 国产91欧美| 91综合视频| 中文在线中文资源| 欧美色图一区| 亚洲激精日韩激精欧美精品| 在线亚洲精品| 亚洲精选91| 国产精品久久久久久模特| 国产美女视频一区二区| 欧美激情精品| 91看片一区| 蜜桃av一区二区三区电影| 欧美在线看片| 国产精品综合| 亚洲深爱激情| 精品一区亚洲| 久久国产精品美女| 久久久成人网| 日韩av字幕| 136国产福利精品导航网址| 欧美一级久久| 欧美精品激情| 国产一区二区久久久久| 亚洲一区二区成人| 婷婷激情久久| 久久国产麻豆精品| 丝瓜av网站精品一区二区| 久久精品91| 国产黄色一区| 一本大道色婷婷在线| 亚洲婷婷丁香| 色天使综合视频| 牛牛精品成人免费视频| 亚欧成人精品| 亚洲啊v在线免费视频| 亚洲精品乱码| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美1区2区3| 国产一区二区三区国产精品| 欧美日韩午夜电影网| 亚洲字幕久久| 日本成人中文字幕| 日本h片久久| 亚洲一区二区三区在线免费| 国产精品呻吟| 三上亚洲一区二区| 欧美一级一区| 91精品丝袜国产高跟在线| 亚洲精品大全| 日本欧美韩国一区三区| 国产精品毛片视频| 石原莉奈一区二区三区在线观看| 国内揄拍国内精品久久| 老司机精品视频在线播放| 欧美国产极品| 日韩国产在线| 国产v日韩v欧美v| yellow在线观看网址| 麻豆久久久久久久| 免费在线播放第一区高清av| 一区二区91| 日韩国产一二三区| 国产美女撒尿一区二区|