需要掌握的知识点
- 会创建一个简单的java web项目——jsp+servlet
- 需要会使用JAVA Mail或者使用common-email发送邮件
- 会使用java进行数据库的操作
- 了解前后端的数据交互
前期准备
- qq邮箱开通POP3/SMTP服务
第一步:
第二步:
2. 下载所需的jar包
jar包下载地址
链接:https://pan.baidu.com/s/1e-WFVjeZuAPLe1Eo7LA2cw
提取码:njds
思路
- 数据库中存储用户是否激活的状态和激活时系统随机生成的校验码
状态:当状态值为1时,处于激活状态,当状态为0时,处于未激活状态
校验码:由系统随机生成的一串字符串,在激活时检查是否是通过发送给用户的邮件激活的 - 用java实现发送邮件,邮件包含一个超链接
代码思路
这是注册页面,输入信息点击注册,发起一个post请求,请求到http:localhost:8080/register
接受注册请求的servlet
@WebServlet("/register")
public class Register extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取从页面发送过来的数据
//系统生成一串随机字符串
//将用户信息保存到数据库中,包括状态(状态为0,表示未激活)和系统生成一串随机字符串
//向用户发送一封邮件
EmailUtils.sendAccountActivateEmail(user);
}
}
发送邮件内容的思路
//可以使用JAVA Mail或者使用common-email发送邮件,建议使用common-email发送邮件,代码比较简洁,需要使用的jar包在准备中有
public class EmailUtils {
private static final String FROM = "要发送邮件的邮箱,这个例子是qq邮箱";
public static void sendAccountActivateEmail(User user) {
//内容可以包含一个链接,该链接主要用来发送一个请求,用来激活账户,即把数据库中账户的状态设为1
//例如链接可以长这样:<a href="http://localhost:8080/activateServlet?id=73742&checkCode=b9e8436a7599b89b6493feac9ba223e9">点击激活账号</a>
//这时候tomcat服务器别关掉了
}
}
激活账户的servelt
@WebServlet("/activateServlet")
public class ActivateServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取id的值和checkCode的值
//id是存储在数据库中账号的主键,通过id找出数据库中的账户注册时存储的一串随机字符串
//checkCode:与数据库中一串随机字符串作比较,如果通过验证,将数据库中的状态设为1, 如果没有通过验证,激活失败
//checkCode为了保密性可以进行一些加密,例如md5
}
}
总而言之,java实现邮箱激活并不难,只要会使用JAVA Mail或common-email发送邮件就可以了。