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;
}
完成
javamail实现邮箱验证功能的更多相关文章
- discuz3.2x增加邮箱验证功能
为防止垃圾用户多次注册,为disczu增加邮箱验证功能. 大致分为二步: 1.申请邮箱,这里推荐使用腾讯免费企业邮箱:https://exmail.qq.com/portal/introducefre ...
- Django 实现网站注册用户邮箱验证功能
我们在很多网站上都可以看到用户注册使用电子邮件激活或启用的方式.也就是说,用户在注册后填写正确的电子邮件地址,接着网站会发送一封启用电子邮件到用户设置的电子邮件的邮箱中,并在邮件中提供一个激活或启用的 ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)
引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...
- javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)
引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- JavaMail实现邮箱之间发送邮件功能
package com.minstone.message.util; import java.util.Date; import java.util.Properties; import javax. ...
- javamail模拟邮箱功能--邮件回复-中级实战篇【邮件回复方法】(javamail API电子邮件实例)
引言: JavaMai下载地址l jar包:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)
引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)
前言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 本章可能是讲解javamail的最后一 ...
随机推荐
- Codeforces 567D One-Dimensional Battle Ships
传送门 D. One-Dimensional Battle Ships time limit per test 1 second memory limit per test 256 megabytes ...
- linux 的jdk安装
1.1 解压上传的安装包 1.2 创建安装目录 1.3 将解压后的目录移动到安装目录 1.4 配置环境变量 修改www.qixoo.qixoo.com/etc/profile文件 ...
- POJ3233Matrix Power Series(十大矩阵问题之三 + 二分+矩阵快速幂)
http://poj.org/problem?id=3233 Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total ...
- Linux目录结构及常用命令(转载)
一.Linux目录结构 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/bin,或/usr/sbin目录下吗?例如,less命令位于/usr/bin目录下.为什么没在/bin中,或 ...
- hdu 1202 The calculation of GPA
感觉本题没有什么好解释的,已知公式,直接编程即可. 1.统计所有 科目的学分 得到总学分 2.统计所有 成绩对应的绩点*对应的学分即可(如果成绩==-1直接continue,不进行统计),得到总绩点. ...
- SQL Server 2005 发布 订阅 (配置实例[图])(转载)
2.1 发布&订阅 1. 测 试环境: Item 发布机 A 订阅机 B OS Windows 2003 Server Windows 2003 Server S ...
- struts+spring action应配置为scope="prototype"
truts+spring action应配置为scope="prototype" <bean id="personAction" scope=" ...
- JS动态调用方法名示例介绍
先看看JS的一个函数 JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描 ...
- Linux CP文件夹略过目录的解决
在Ubuntu Linux复制文件夹时出现一个问题,做个笔记,希望能给刚入门的菜鸟学习一下(见图1). 出现略过目录: www_linuxidc_com@linuxidc-Aspire-3680:~$ ...
- StackExchange Redis如何实现BRPOP/BLPOP
今天在使用StackExchange Redis客户端时.我想要使用BRPOP,但是我发现StackExchange Redis并没有提供API,没办法只好找资料看文档了. 原来StackExchan ...