java 实现注册时发送激活邮件+激活

简介:   在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性。形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册。

 在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性。形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册。


 最近项目中也用到这个需求,做了个Demo与大家分享,大至思想如下:


数据库表结构


 用户表t_user有五个字段分别为用户名、密码、邮箱地址、激活码、状态:

 | username | password | email |code | state |

核心代码:


 UserManager.java


import java.util.Properties;
import java.util.UUID;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import dao.UserDao;
public class UserManager {
  /**
   * 注册用户 
   * @param username 用户名
   * @param password 密码
   * @param email 邮箱
   * @return 是否注册成功
   */
  public Boolean Register(String username,String password,String email){
    Boolean result=false;
    //生成用户code
    String code=UUID.randomUUID().toString().replace("-", "");
    //添加用户
    UserDao userDao=new UserDao();
    result=userDao.AddUser(username, password, email, code);
    //向用户发送激活邮件
    sendMail(email,code);
    return result;
  }
  /**
   * 发送激活邮件
   * @param to 收件人邮箱地址
   * @param code 激活码
   */
  public static boolean sendMail(String to, String code) {  
        try {  
            Properties props = new Properties();  
            props.put("username", "huyuyang6688@163.com");   
            props.put("password", "123456");   
            props.put("mail.transport.protocol", "smtp" );  
            props.put("mail.smtp.host", "smtp.163.com");  
            props.put("mail.smtp.port", "25" );  
            Session mailSession = Session.getDefaultInstance(props);  
            Message msg = new MimeMessage(mailSession);     
            msg.setFrom(new InternetAddress("huyuyang6688@163.com"));  
            msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));   
            msg.setSubject("激活邮件");   
            msg.setContent("<h1>此邮件为官方激活邮件!请点击下面链接完成激活操作!</h1><h3><a href='http://localhost:8080/SendMail/servlet/ActiveServlet?code="+code+"'>http://localhost:8080/SendMail/servlet/ActiveServlet</a></h3>","text/html;charset=UTF-8");
            msg.saveChanges();  
            Transport transport = mailSession.getTransport("smtp");  
            transport.connect(props.getProperty("mail.smtp.host"), props  
                    .getProperty("username"), props.getProperty("password"));   
            transport.sendMessage(msg, msg.getAllRecipients());  
            transport.close();     
        } catch (Exception e) {  
            e.printStackTrace();  
            System.out.println(e);  
            return false;  
        }  
        return true;  
    }   
  /**
   * 激活用户
   * @param code 用户激活码
   * @return 是否激活成功
   */
  public Boolean Active(String code){
    UserDao userDao=new UserDao();
    String username=userDao.findUserByCode(code);
    if(username!=null && username!=""){
      //如果存在用户,将此用户状态设为可用
      userDao.setState(username);
      return true;
    }else{
      return false;
    }
  }
}


 register.jsp


8.png


当用户注册时


 1、为用户生成随机的激活码(此激活码是添加根据代码规则自动生成的,这里的激活码以随机生成的UUID为例);

 2、添加一条用户记录;

 3、向用户发送激活邮件。上述代码中的发信人是小编自己的邮箱,一般为企业邮箱。如果有条件的话,这里还向大家推荐一款邮箱服务器——易邮邮件服务器,可以在局域网内建立邮件系统进行测试。


激活邮件如下:


8.png


激活


  用户点击邮箱中的链接后,系统根据用户点击链接发来的激活码去数据库中查询与该激活码匹配的用户记录,如果记录存在,则将用户状态更改为可用的状态。

(限于篇幅,这里不贴全部代码,需要的朋友可以点此下载源码

相关文章
|
8月前
|
前端开发 Java 数据库连接
Java代码打造的注册系统
Java代码打造的注册系统
79 0
消息中间件 缓存 监控
169 0
|
8月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
5月前
|
Java
Java Bean 注册对象
Java Bean 注册对象
30 0
|
6月前
|
缓存 开发者 Java
java枚举消除冗余代码问题之需要延迟注册枚举到缓存问题如何解决
java枚举消除冗余代码问题之需要延迟注册枚举到缓存问题如何解决
|
8月前
|
前端开发 Java 数据库连接
【Java实战篇】SpringBoot+MyBatis快速实现登录注册
【1月更文挑战第19天】【Java实战篇】SpringBoot+MyBatis快速实现登录注册
|
7月前
|
安全 Java 开发者
Java一分钟之-Spring Cloud Netflix Eureka:服务注册与发现
【6月更文挑战第8天】Spring Cloud Eureka是微服务架构的关键,提供服务注册与发现功能。本文讲解Eureka工作原理、配置、常见问题及解决方案。Eureka包含Server(管理服务状态)和Client(注册服务实例并发现服务)。快速入门包括启动Eureka Server和创建Eureka Client。常见问题涉及服务注册不上、服务下线和客户端注册信息不准确,可通过检查网络、理解自我保护机制和配置元数据解决。此外,文中还提及健康检查、安全配置和集群部署等高级实践,以增强系统健壮性和扩展性。
191 8
|
6月前
|
Java API Maven
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?
|
6月前
|
负载均衡 Java Maven
Java中的微服务治理与服务注册
Java中的微服务治理与服务注册
|
6月前
|
存储 负载均衡 Java
Java中的服务注册与发现原理与实现
Java中的服务注册与发现原理与实现