项目中qq邮件激活账号如何实现

    科技2024-07-23  63

    项目中qq邮件激活账号如何实现

    qq邮件激活账号功能展示:

    1.注册页面:

    注册成功页面:

    查看邮箱:

    点击激活后:

    qq邮件激活账号实现过程:

    第一步在项目的pom.xml导入mail对应的maven依赖:

    <!-- https://mvnrepository.com/artifact/javax.mail/mail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>

    第二步创建MailUtils工具类:

    public class MailUtils { public static void sendMail(String email, String emailMsg) throws AddressException, MessagingException { //定义Properties对象 Properties props = new Properties(); //设置邮件传输协议为SMTP props.setProperty("mail.transport.protocol", "SMTP"); //设置邮件服务器主机名 props.setProperty("mail.host", "smtp.qq.com"); //邮件服务器验证 props.setProperty("mail.smtp.auth", "true"); //定义验证信息 Authenticator auth = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("xxxxx583301@qq.com", "xxxxxxlxnjghgfaj"); } }; //创建会话,和邮件服务器的会话 Session session = Session.getInstance(props, auth); //发送邮件的相关信息X Message message = new MimeMessage(session); //设置发送方 message.setFrom(new InternetAddress("xxxxxx83301@qq.com")); //设置接收方 message.setRecipient(RecipientType.TO, new InternetAddress(email)); //设置邮件的主题 message.setSubject("用户激活"); // message.setText("这是一封激活邮件,请<a href='#'>点击</a>"); //设置编码方式 message.setContent(emailMsg, "text/html;charset=utf-8"); Transport.send(message); } }

    第三步就是在项目中怎么使用MailUtils类了

    1.handler层:注册功能                                                 (网上书城项目)

    这里是用户注册后从前端接受到完整User信息,并设置了激活码ActiveCode

    @RequestMapping("/register") public String register(User user, String checkCode, HttpSession session, HttpServletRequest request){ user.setActiveCode(IdUtils.getUUID()); String checkcode_session = (String) session.getAttribute("checkcode_session"); //判断校验码是否输入正确 if(checkcode_session.equals(checkCode)){ int rows = userService.addUser(user,request); if (rows>0){ return "redirect:/client/registersuccess.jsp"; }else { request.setAttribute("fail","新用户注册失败,请重试!"); return "/client/register.jsp"; } }else { request.setAttribute("check_error","校验码错误,请重新输入!"); return "/client/register.jsp"; } }

    2.Service层:

    这里向用户邮箱发送了邮件+激活码,因为激活码是唯一的可以找到需要激活的账号,并创建了一个未激活的账号(return)

    @Override public int addUser(User user, HttpServletRequest request) { //http://localhost:8080/client/user/register /*"+request.getContextPath()+"*/ String emailMsg = "感谢你注册网上书城,请点击" + "<a href='http://localhost:8080/" + request.getContextPath() + "/client/user/activeUser?activeCode=" + user.getActiveCode() + "'>激活</a>后使用!"; try { MailUtils.sendMail(user.getEmail(), emailMsg); } catch (MessagingException e) { e.printStackTrace(); } return userDao.insertUser(user); }

    3.点击激活后再次调转到Handler层

    //用户激活 @RequestMapping("/activeUser") public String activeUser(String activeCode){ System.out.println("激活码:"+activeCode); int rows = userService.activeUser(activeCode); if (rows>0){ return "redirect:/client/activesuccess.jsp"; }else { return "redirect:/client/activeFail.jsp"; } }

    然后Service层 以及Dao层的XML

    <update id="activeUser"> update user set state = 1 where activeCode = #{activeCode} </update>

     

     

     

    Processed: 0.015, SQL: 8