亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

JavaMailSender實現郵箱驗證功能

2024-07-13 10:14:52
字體:
來源:轉載
供稿:網友

本文通過JavaMailSender實現郵箱注冊驗證中遇到的問題開始著手,給大家詳細分析了其原理以及問題的解決辦法。

使用郵箱注冊驗證,我們需要理清設計思路:

問題一:注冊信息提交后需要對填寫的郵箱號發送郵件

問題二:郵件到達時用戶如何進行激活,是通過get請求還是獲取驗證碼(本篇使用get接口激活)

問題三:郵件激活如何設置有效時間

通過以上三個問題,博主來幫助大家掌握JavaMailSender郵箱驗證

問題一

我首先需要解決如何向指定郵箱號發送郵件

在pom中加入如下依賴:

<!--email--><dependency>  <groupId>javax.mail</groupId>  <artifactId>mail</artifactId>  <version>1.4.7</version></dependency>

 

沒錯,我們使用javax拓展包下的mail依賴,所以代碼中import別選錯了

本篇代碼一切從簡,方便大家讀懂

從上到下,我們先看接口:

@RequestMapping(value = "myajaxRegister")  @ResponseBody  public String sendEmail(@RequestParam String email){    User user = new User("luxiaotao","0331");    new Thread(){      @Override      public void run(){        emailService.senEmail(user,email);      }    }.start();    return "郵件已發送至您的郵箱,請激活";  }

 

因為是測試,所以博主制造了用戶的假數據,拿到email才是關鍵

新建線程來執行郵件發送方法是為了提高用戶的體驗

試想下如果不為異步,用戶需要等待郵件發送完才能跳轉頁面

來看郵件發送的業務層方法:

@Override  public boolean senEmail(User user,String email) {    try {      JavaMailSenderImpl mailSender = new JavaMailSenderImpl();      mailSender.setHost("smtp.163.com");      mailSender.setUsername("填寫自己的163郵箱賬號");      mailSender.setPassword("163郵箱密碼");      MimeMessage mailMessage = mailSender.createMimeMessage();      MimeMessageHelper helper = new MimeMessageHelper(mailMessage,true,"GBK");      helper.setFrom(mailSender.getUsername());      helper.setTo(email);      helper.setSubject("title");      helper.setText("郵件發送成功");      String emailToken = getEmailToken(user);      String url = "<a href='http://localhost:8088/activateMail?emailToken="+emailToken+"'>激活"+"</a></br><h1>如果以上超連接無法訪問,請將以下網址復制到瀏覽器地址欄中</h1><h2>http://localhost:8088/activateMail?emailToken="+emailToken+"</h2>";      helper.setText(url,true);      mailSender.send(mailMessage);      return true;    }catch (Exception e){      e.printStackTrace();      return false;    }  }

 

此方法解釋:

1.如果你的服務端郵箱是qq郵箱,則修改為:mailSender.setHost("smtp.qq.com");

2.MimeMessageHelper是javax下mail的拓展類,如果你使用spring封裝的mail則不需要。如果使用spring的mail,set方法都會不同

3.helper.setText(url,true);的第二個參數true表示當前String是html格式,所以標簽都會起作用

4.getEmailToken(user);方法會在下面講到

到這里為止,郵件已經可以正常發送,為了方便我給出html頁面代碼:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body><form method="get" action="/myajaxRegister">  email<input type="text" name="email"></br>  <input type="submit" value="register"></form></body></html>

問題二

如何使用get請求的API來激活郵件?

問題一中senEmail()下的getEmailToken(user)正是用來激活的

可以看出senEmail()發送的郵件內容是一個超鏈接,它就是用來啟動我們的激活接口

但是這和getEmailToken(user)又有什么關系呢

從字面意思可以看出,我們這里將會使用一個token

先看激活controller

@RequestMapping(value = "activateMail")  public String activateMail(@RequestParam String emailToken){    if (emailService.balanceToken(emailToken)){      return "success";    }    return "error1";  }

 

通過超鏈接,我們發送一個emailToken參數給服務器

服務器拿到這個token之后,便會和本地的token進行比對,如果相同,則通過驗證

這里我使用redis來做緩存,并且以token為key,用戶信息(User)為value

來看兩個方法:

@Override  public String getEmailToken(User user){    String token = UUID.randomUUID().toString();    String value = user.toString();    redisTemplate.opsForValue().set(token,value);    return token;  }    @Override  public boolean balanceToken(String emailToken) {    if(redisTemplate.opsForValue().get(emailToken)!=null){      return true;    }    return false;  }

 

第一個方法使用redis將User信息轉換成String并存入內存

第二個方法便是激活驗證,通過key(Token)來檢查redis中是否有值,成功返回true

問題三

那么如果設置郵箱驗證的有效期呢?

講到這里,經常使用redis的同學估計已經猜到了

只需要在getEmailToken()中加入一行代碼即可:

@Override  public String getEmailToken(User user){    String token = UUID.randomUUID().toString();    String value = user.toString();    redisTemplate.opsForValue().set(token,value);    redisTemplate.expire(token,60, TimeUnit.SECONDS);    return token;  }

 

沒錯,使用redisTemplate.expire()設置當前鍵值對的過期時間

最后,來看下激活郵件吧:

JavaMailSender,郵箱驗證

以上就是本次介紹的JavaMailSender實現郵箱注冊驗證的全部內容,如果大家還有不明白的地方,可以在下方的留言區討論。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产脚交av在线一区二区| 国产精品欧美亚洲777777| 日韩中文在线中文网在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲精品影视在线观看| 欧美国产乱视频| 在线看福利67194| 亚洲一区二区三区久久| 久久99国产精品自在自在app| 在线观看91久久久久久| 一区二区三区视频免费| 亚洲色图第一页| 欧美午夜影院在线视频| 国产精品美女主播在线观看纯欲| 欧美精品一本久久男人的天堂| 中文字幕欧美视频在线| 8090理伦午夜在线电影| 国产精品成人av在线| 国产精品av电影| 亚洲最新av网址| 欧美与欧洲交xxxx免费观看| 欧美日韩亚洲视频一区| 深夜福利国产精品| 日韩成人在线免费观看| 国产精品第七十二页| 2019日本中文字幕| 精品国产欧美一区二区五十路| 黑人巨大精品欧美一区免费视频| 亚洲一区二区久久久久久久| 欧美成人精品一区二区三区| 欧美大片第1页| 日韩国产精品视频| 欧美一区二区三区图| 91九色综合久久| 欧美色图在线视频| 51午夜精品视频| 亚洲黄色成人网| 久久精品成人欧美大片古装| 久久在线精品视频| 亚洲国产精品久久久久秋霞不卡| 亚洲欧美国产va在线影院| 一区二区三区视频免费在线观看| 久久国产精品久久精品| 欧美一级大胆视频| 欧美日韩中文字幕在线| 欧美成人手机在线| 最新国产精品拍自在线播放| 国产美女精彩久久| 久久夜精品va视频免费观看| 成人做爰www免费看视频网站| 日本国产欧美一区二区三区| 亚洲国产精品免费| 欧美精品videosex性欧美| 久久不射电影网| 久久视频在线直播| 高清亚洲成在人网站天堂| 国产丝袜精品第一页| 久久亚洲精品一区| 精品久久久久久电影| 日韩欧美成人免费视频| 亚洲精品中文字幕有码专区| 这里只有精品视频在线| 日本成人激情视频| 国产精品日韩欧美大师| 国产精品第10页| 亚洲香蕉在线观看| 亚洲视频自拍偷拍| 在线电影中文日韩| 日韩精品极品毛片系列视频| 欧美成人黄色小视频| 久久久999精品| 欧美激情久久久久| 九九热精品在线| 亚洲黄色av网站| 欧美午夜激情小视频| 日韩av电影在线网| 久久久久久999| 亚洲欧洲一区二区三区久久| 国产精品永久在线| 欧美激情第6页| 久久精品亚洲热| 亚洲国产天堂久久综合| 国产97在线播放| 欧美日韩国产精品一区二区三区四区| 日本免费一区二区三区视频观看| 欧美日韩一区二区免费在线观看| 成人有码在线视频| 亚洲护士老师的毛茸茸最新章节| 国产精品视频自在线| 久久亚洲精品中文字幕冲田杏梨| 91在线直播亚洲| 久久久在线免费观看| 久热精品视频在线免费观看| 久久久免费高清电视剧观看| 欧美亚洲伦理www| 久久精品小视频| 亚洲视频在线免费观看| 欧洲成人免费aa| 欧美精品videosex牲欧美| www.亚洲天堂| 欧美日韩中国免费专区在线看| 日本精品一区二区三区在线播放视频| 国产欧美一区二区三区在线| 欧美成人一二三| 国产精品va在线播放我和闺蜜| 美女扒开尿口让男人操亚洲视频网站| 日本最新高清不卡中文字幕| 欧美激情伊人电影| 国内精品免费午夜毛片| 97国产在线观看| 亚洲国产精品悠悠久久琪琪| 欧美成人精品h版在线观看| 人人做人人澡人人爽欧美| 久久综合五月天| 97免费视频在线播放| 国产精品久久久久久中文字| 91久久久久久久久久| 精品激情国产视频| 国产精品91久久久| 国产精品电影一区| 色综合色综合网色综合| 视频一区视频二区国产精品| 亚洲精品乱码久久久久久金桔影视| 国产精品免费一区二区三区都可以| 国产精品aaaa| 亚洲视频一区二区| 精品美女久久久久久免费| 久久亚洲国产精品成人av秋霞| 国外成人在线直播| 久久影院模特热| 欧美成人在线免费视频| 欧美午夜影院在线视频| 国产在线拍偷自揄拍精品| 青青草国产精品一区二区| 欧美视频在线看| 97av在线视频| 性色av一区二区三区免费| 国产mv久久久| 国外成人在线播放| 日韩精品免费视频| 国产在线视频2019最新视频| 亚洲国内精品视频| 精品福利一区二区| 性欧美亚洲xxxx乳在线观看| 欧美肥婆姓交大片| 色婷婷久久av| 国产日韩在线视频| 国产精品伦子伦免费视频| 国产精品美女主播在线观看纯欲| 亚洲色图综合网| 国产精品91免费在线| 7777免费精品视频| 日韩在线欧美在线国产在线| 久久久黄色av| 色樱桃影院亚洲精品影院| 久久精品亚洲一区| 亚洲欧美国内爽妇网| 日韩欧美中文字幕在线播放| 国产精品2018| 91久久久久久国产精品| www亚洲精品| 国产欧美日韩免费| 欧美激情一区二区三区高清视频| 国内精品久久久久久中文字幕|