日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javaweb邮箱验证注册的实现

發布時間:2023/12/31 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javaweb邮箱验证注册的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


步驟:
1.調用后臺在數據庫里新增用戶,(應有三個欄位:激活狀態,激活碼,有效時間)

DWR前端:userService.register(u,function(){...}) //-------------------------------------public User register(User user) throws AddressException, NoSuchAlgorithmException, MessagingException{User u = this.loadByEmail(user.getEmail());//驗證數據庫是否存在,避免重復郵箱注冊if(u==null) {//MD5密碼加密user.setPassword(SecurityUtil.md5(user.getPassword()));//初始化屬性user.setStatus(0);user.setType("student");user.setPower(0);user.setLevel(0);//調用發送郵件服務--函數在步驟2user = MailUtil.activateMail(user);this.add(user);}return u;}

2.發送郵件


public class MailUtil{ public static final String FROM = "zhengzran@163.com";//發件人的emailpublic static final String PWD = "******";//發件人密碼--郵箱密碼public static final String URL = "http://localhost:8888/iclass";//項目主頁public static final int TIMELIMIT = 1000*60*60*24; //激活郵件過期時間24小時public static final String TITLE = "iClass賬戶激活郵件";public static final String HOST = "smtp.163.com";public static final String SMTP = "smtp"; //---------------自定義函數-----------------public static User activateMail(User u) throws AddressException, MessagingException, NoSuchAlgorithmException {//注冊郵箱String to = u.getEmail();//當前時間戳Long curTime = System.currentTimeMillis();//激活的有效時間Long activateTime = curTime+TIMELIMIT;//激活碼--用于激活郵箱賬號String token = to+curTime;u.setToken(SecurityUtil.md5(token));u.setCreateDate(new Date());token = u.getToken();//過期時間u.setActivateTime(activateTime);//發送的郵箱內容String content = "<p>您好 O(∩_∩)O~~<br><br>歡迎加入iClass!<br><br>帳戶需要激活才能使用,趕緊激活成為iClass正式的一員吧:)<br><br>請在24小時內點擊下面的鏈接立即激活帳戶:"+"<br><a href='"+URL+"/activatemail/?token="+token+"&email="+to+"'>"+URL+"/activatemail/?token="+token+"&email="+to+"</a></p>";//調用發送郵箱服務MailUtil.sendMail(to, TITLE, content);return u;} //---------------發送郵件-------------------public static void sendMail(String to,String title,String content) throws AddressException, MessagingException {Properties props = new Properties(); //可以加載一個配置文件 // 使用smtp:簡單郵件傳輸協議 props.put("mail.smtp.host", HOST);//存儲發送郵件服務器的信息 props.put("mail.smtp.auth", "true");//同時通過驗證 Session session = Session.getInstance(props);//根據屬性新建一個郵件會話 //session.setDebug(true); //有他會打印一些調試信息。 MimeMessage message = new MimeMessage(session);//由郵件會話新建一個消息對象 message.setFrom(new InternetAddress(FROM));//設置發件人的地址 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//設置收件人,并設置其接收類型為TO message.setSubject(title);//設置標題 //設置信件內容 //message.setText(mailContent); //發送 純文本 郵件 todo message.setContent(content, "text/html;charset=gbk"); //發送HTML郵件,內容樣式比較豐富 message.setSentDate(new Date());//設置發信時間 message.saveChanges();//存儲郵件信息 //發送郵件 Transport transport = session.getTransport(SMTP); //Transport transport = session.getTransport(); transport.connect(FROM, PWD);transport.sendMessage(message, message.getAllRecipients());//發送郵件,其中第二個參數是所有已設好的收件人地址 transport.close(); }

如果前面順利的話,就會收到如下的激活郵件:

3.激活郵箱賬號

//SpringMVC的映射@RequestMapping("/activatemail")public String hello(HttpServletRequest request,Model model) throws IOException, AddressException, MessagingException, NoSuchAlgorithmException {//獲取激活參數String email = request.getParameter("email");String token = request.getParameter("token");Long time = System.currentTimeMillis();User u = userService.loadByEmail(email);UserDTO ud = new UserDTO();ud.setMail(email);if(u!=null) {ud.setEmail(1);if(u.getStatus()==0&&u.getActivateTime()!=1) {if(u.getActivateTime()<time) {//過期--激活失敗u.setActivateTime(Long.parseLong("-1"));//重新發送激活郵件u = MailUtil.activateMail(u);//重新設置了有效時間和token激活碼userService.updateUser(u);ud.setTime(-1);model.addAttribute("user", JsonUtil.toJson(ud));//resp.getWriter().write(JsonUtil.toJson(u));} else if (u.getActivateTime()>time){//在時間內u.setActivateTime(Long.parseLong("1"));ud.setTime(1);if(u.getToken().equals(token)) {//在時間內且激活碼通過,激活成功u.setStatus(1);u.setCreateDate(new Date());//重新設置token防止被禁用的用戶利用激活u.setToken(token.replace("1", "c"));u.setType("student");userService.updateUser(u);ud.setToken(1);ud.setStatus(1);model.addAttribute("user", JsonUtil.toJson(ud));//resp.getWriter().write(JsonUtil.toJson(u));} else {//在時間內但是且激活碼錯誤ud.setToken(-1);model.addAttribute("user", JsonUtil.toJson(ud));}}//u.getStatus()!=1判斷結束} else if(u.getStatus()==1) {//已經被激活的重復點鏈接ud.setStatus(-1);model.addAttribute("user", JsonUtil.toJson(ud));}//u為空} else if(u==null) {ud.setEmail(-1);model.addAttribute("user", JsonUtil.toJson(ud));}return "activatemail";}基本完成了郵箱驗證注冊功能,不同的框架可能會有一些差別,但原理基本是一樣的,
注意,發送郵箱的賬號需要把smtp服務打開,163郵箱默認就是打開的。

總結

以上是生活随笔為你收集整理的Javaweb邮箱验证注册的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。