javamail实现邮箱验证功能
来源:互联网 发布:情绪垃圾桶知乎 编辑:程序博客网 时间:2024/06/06 08:39
javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现
用户注册后通过servlet得到邮箱地址,并使用方法发送邮件
//校验用户名 if(dao.findUserByName(user.getUsername())!=null) { throw new RuntimeException("用户名已经存在"); } //调用DAO中的方法添加用户 user.setRole("user"); user.setState(0); user.setActivecode(UUID.randomUUID().toString()); dao.addUser(user); //发送激活邮件 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()+"点击如下链接激活用户,如果不能点击请复制到浏览器地址栏访问: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"); //调用Service中的方法激活 User user=service.active(activecode); //激活成功后登陆用户 request.getSession().setAttribute("user", user); //激活成功后3秒回主页 response.getWriter().write("激活成功,3秒回主页"); response.setHeader("Refresh", "3;url=index.jsp"); }
与数据库中的激活码进行验证
public User active(String activecode) { // TODO 自动生成的方法存根 User findU=new User(); findU.setActivecode(activecode); User user=dao.findUserByActivecode(activecode); if(user==null) { throw new RuntimeException("激活码不存在,请检查您的激活码"); } //如果用户已经激活过,不能重复激活 if(user.getState()!=0) { throw new RuntimeException("用户已经激活,不要重复激活,请直接登陆"); } //用户没有激活,但激活码已经激活 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; }
完成
0 0
- javamail实现邮箱验证功能
- Jsoup+JavaMail实现自动投票,验证邮箱功能
- JavaMail实现邮箱验证码
- 使用 javamail 做邮箱验证功能
- javamail实现邮箱验证代码记录
- javamail实现邮箱验证的异常
- JavaMail实现注册邮箱验证案例
- javaMail登录并实现邮箱激活功能
- JavaMail实现简单邮箱验证——163邮箱
- JavaMail进行邮箱验证
- 邮箱验证码功能实现
- 实现验证码,邮箱验证功能
- struts、hibernate框架下实现javamail邮箱验证
- 正则表达式实现邮箱验证的功能
- 实现邮箱验证功能的代码
- javamail实现解析邮箱收件箱
- JavaMail——邮箱验证用户注册
- 通过javamail 验证邮箱是否有效
- PAT (Advanced Level) Practise 1056 Mice and Rice (25)
- linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)
- xcode7相关问题
- 笔记整理 网站优化 大并发 大流量 大存储 负载均衡 集群
- 学习Java的小结1
- javamail实现邮箱验证功能
- Button.setBackgroundDrawable,显示的文字未居中
- 在Android项目中集成AndroidAnnotations注解
- jQuery $.proxy
- Apache Arrow:一个跨平台的内存数据交换格式
- windows 下 nginx + php 的一个Bug
- Error in init(): Log already in use报错的解决方法
- 枚举用法
- 去掉自定义的Dialog 的布局的最上面的蓝色的title线