javamail实现邮箱验证功能
生活随笔
收集整理的這篇文章主要介紹了
javamail实现邮箱验证功能
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
javamail是基于SMTP協(xié)議和POP3協(xié)議的郵件發(fā)送與接收系統(tǒng),在用戶注冊與登陸的過程中,常需要用到郵箱驗證功能,下面是基于javamail的一個簡單實現(xiàn)
用戶注冊后通過servlet得到郵箱地址,并使用方法發(fā)送郵件
//校驗用戶名if(dao.findUserByName(user.getUsername())!=null){throw new RuntimeException("用戶名已經(jīng)存在");}//調(diào)用DAO中的方法添加用戶user.setRole("user");user.setState(0);user.setActivecode(UUID.randomUUID().toString());dao.addUser(user);//發(fā)送激活郵件Properties prop = new Properties();prop.setProperty("mail.transport.protocol", "smtp");prop.setProperty("mail.smtp.host", "localhost");prop.setProperty("mail.smtp.auth", "true");prop.setProperty("mail.debug", "true");Session session=Session.getInstance(prop);Message msg=new MimeMessage(session);msg.setFrom(new InternetAddress("aa@zj.com"));msg.setRecipient(RecipientType.TO, new InternetAddress(user.getEmail()));msg.setSubject(user.getUsername()+",來自estore的激活郵件");msg.setText(user.getUsername()+"點(diǎn)擊如下鏈接激活用戶,如果不能點(diǎn)擊請復(fù)制到瀏覽器地址欄訪問:localhost/Estore/ActiveServlet?activecode="+user.getActivecode());Transport trans=session.getTransport();trans.connect("aa","123");trans.sendMessage(msg, msg.getAllRecipients());//conn.commit();}catch(Exception e){e.printStackTrace();throw new RuntimeException(e);}}鏈接地址代碼
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {UserService service=BasicFactory.getFactory().getService(UserService.class); //激活用戶//獲取激活碼String activecode=request.getParameter("activecode");//調(diào)用Service中的方法激活User user=service.active(activecode);//激活成功后登陸用戶request.getSession().setAttribute("user", user);//激活成功后3秒回主頁response.getWriter().write("激活成功,3秒回主頁");response.setHeader("Refresh", "3;url=index.jsp");}與數(shù)據(jù)庫中的激活碼進(jìn)行驗證
public User active(String activecode) {// TODO 自動生成的方法存根User findU=new User();findU.setActivecode(activecode);User user=dao.findUserByActivecode(activecode);if(user==null){throw new RuntimeException("激活碼不存在,請檢查您的激活碼");}//如果用戶已經(jīng)激活過,不能重復(fù)激活if(user.getState()!=0){throw new RuntimeException("用戶已經(jīng)激活,不要重復(fù)激活,請直接登陸");}//用戶沒有激活,但激活碼已經(jīng)激活if(System.currentTimeMillis() - user.getUpdatetime().getTime()>1000*3600*24){dao.delete(user.getId());throw new RuntimeException("激活碼超時,此用戶作廢,請重新注冊");}dao.updateState(user.getId());user.setState(1);return user;}完成
總結(jié)
以上是生活随笔為你收集整理的javamail实现邮箱验证功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用TabWidget实现底部菜单
- 下一篇: 空间域图像增强