javamail实现邮箱验证功能

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;}

完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[zz]libev 简介

1 libev libev所实现的功能就是一个强大的reactor,可能notify事件主要包括下面这些: ev_io // IO可读可写ev_stat // 文件属性变化ev_async // 激活线程ev_signal // 信号处理ev_timer // 定时器ev_periodic // 周期任务ev_child // 子进程状态变化ev_fork // 开辟进…

我没有超能力,我只是用了这10个网站。

🍅 作者主页:不吃西红柿 🍅 简介:CSDN博客专家 & 总榜前十🏆、HDZ核心组成员。欢迎点赞、收藏、评论 🍅 粉丝专属福利:知识体系、面试题库、技术互助、简历模板。文末公众号领取 1、今日热…

干货 | 加速AI发展!一文了解GPU Computing

来源: 启迪之星上海摘要:英伟达的显卡对于游戏达人来说再为熟悉不过,并逐渐融入到我们的日常生活当中。英伟达的显卡对于游戏达人来说再为熟悉不过,并逐渐融入到我们的日常生活当中。近日,世界上第一款“光线追踪”GPU…

图解二叉树的Morris(莫里斯)遍历

二叉树的Morris(莫里斯)遍历 本文参考链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/submissions/490846864/ 文章目录 二叉树的Morris(莫里斯)遍历模板代码前序遍历中序遍历后序遍历 Morris 遍历使用二叉树节点中大量指向 null 的指针&…

javaweb数据库操作

本文主要内容有C3P0数据库连接池,dbutils的使用,元数据的应用 在对数据库进行增删改查时,使用数据库连接池可以有效的提高效率,节省资源,C3P0是Apache组织提供的一个有效方式 C3P0的XML配置文件,文件名必…

PHP5.5中新增的参数跳跃和生成器功能介绍

生成器 目前&#xff0c;自定义迭代器很少使用&#xff0c;因为它们的实现&#xff0c;需要大量的样板代码。生成器解决这个问题&#xff0c;并提供了一种简单的样板代码来创建迭代器。 例如&#xff0c;你可以定义一个范围函数作为迭代器: <?phpfunction *xrange($sta…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 III【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

瓜分340亿美元物联网芯片半导体市场!机会在这五大行业【附下载】| 智东西内参...

来源&#xff1a;智东西摘要&#xff1a;市场压力之下&#xff0c;物联网为工业、汽车、智慧城市、医疗健康和消费半导体提供了新的解决方案。半导体产业渗透了我们生活中的各个方面&#xff0c;从闹钟、微波炉到手机、笔记本。而现在&#xff0c;物联网技术正在为全球半导体市…

Android之数据库操作

安卓数据库帮助类 /*** 数据库帮助类&#xff0c;用于管理数据库* author Administrator**/ public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {private String tag"PersonSQLiteOpenHelper";public PersonSQLiteOpenHelper(Context context) {//数据…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 II【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

用互联网大脑模型分析滴滴的战略意图和战术失误

作者&#xff1a;刘锋 互联网进化论作者&#xff0c;计算机博士滴滴出行与美国的Uber&#xff0c;本质上都是基于互联网的智能打车软件&#xff0c;让任何拥有家用汽车的司机都可以与出租车司机一样&#xff0c;服务于打车用户。 在滴滴&#xff0c;Uber出世之前的出租车行业…

Android数据存储之sharedpreferences与Content Provider

android中对数据操作包含有&#xff1a; file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据&#xff0c;程序不能通过这三种方法去操作别的应用内的数据 其中sqlite3已经在上一节中讲述了&#xff0c;本节主要包含shar…

vtk类之vtkImageReslice:基本算法,对体数据沿着轴进行切片

沿着轴方向切割体数据。 vtkImageReslice 是几何图形过滤器中的瑞士军刀。他可以排列&#xff0c;旋转&#xff0c;翻转&#xff0c;缩放&#xff0c;重新采样&#xff0c;变形, 还有随意再任何效率与图像质量组合下&#xff0c;渲染图像。简单的操作&#xff0c;像排列&#x…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 12丨游戏玩法分析 V【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的

作者&#xff1a;Kaz Sato 来源&#xff1a;Google Cloud、机器之心摘要&#xff1a;张量处理单元&#xff08;TPU&#xff09;是一种定制化的 ASIC 芯片&#xff0c;它由谷歌从头设计&#xff0c;并专门用于机器学习工作负载。TPU 为谷歌的主要产品提供了计算支持&#xff0c;…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 12丨销售分析 III【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

[唐胡璐]Excel技巧 - 使用Excel 2007完成多人协同录入工作

下面我们来介绍下Excel 2007的共享功能。 一、设置共享 启动Excel 2007&#xff0c;打开需要设置共享的工作薄文档&#xff0c;切换到“审阅”菜单选项卡中&#xff0c;单击“更改”组中的“共享工作薄”按钮&#xff0c;打开“共享工作薄”对话框&#xff0c;如下图所示。 …

Android之jni入门

jni即java native interface&#xff0c;使用jni我们可以在JAVA中调用C代码&#xff0c;提高了效率&#xff0c;可以复用代码&#xff0c;可以灵活的应用于各种场景 怎么使用JNI 安装软件 1.NDK 用于将C代码编译成so库 2.CygWin 在windows下模拟linux环境 3.CDT 在eclipse…

腾讯投资过 600 多家公司不惊奇,京东也有出手 260+ | 大公司投资并购盘点

来源&#xff1a;IT桔子A 股一片绿&#xff0c;这已经不是满屏绿色的第一天了&#xff0c;2018 年以来&#xff0c;A 股经历了起起落落落落落落……尤其在中美贸易战不断升级后&#xff0c;A 股的代表颜色就成了绿色&#xff0c;少数会有几家企业翻红&#xff0c;然而过不了几天…

埋点技术:“呵呵,你在网上的一举一动,都在我眼皮子底下”

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家 & 总榜前十&#x1f3c6;、HDZ核心组成员。欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 1、什么是…