注册后邮箱激活功能实现

注册时邮箱激活功能的实现思想

在数据库表中添加一个用来检测用户是否注册的状态值,注册的成功的时候,在数据库中添加一个随机生成的一串code,通过获取到的前端的邮箱实现自动发送邮件的功能。当用户完成注册就将其状态值改变并删除随机生成的code

servlet实现代码

		
		
		Map<String ,String[]> map = request.getParameterMap();
		User user=new User();
		MyBeanUtils.populate(user, map);
		//获取随机生成的id
		user.setUid(UUIDUtils.getId());
		//获取随机生成的code
		user.setCode(UUIDUtils.getCode());
		//设置初始状态吗
		user.setState(0);
		UserService userService=new UserServiceImp();
		try {
			userService.uerRegist(user);
			request.setAttribute("msg","用户注册成功,请激活");
			MailUtils.sendMail(user.getEmail(), user.getCode());
		} catch (Exception e) {
			// TODO: handle exception
			request.setAttribute("msg","用户注册失败,请重新注册");
		}
		return "/jsp/info.jsp";
	}	

	public String active(HttpServletRequest request, HttpServletResponse response) throws Exception {
		//获取去code值
		String code=request.getParameter("code");
		//调用service方法判断是否激活成功
		UserService userService=new UserServiceImp();
		boolean check=userService.userActive(code);
		//根据返回的布尔值进行相应的跳转
		if(check){
			request.setAttribute("msg", "用户激活成功,请登录!");
			return "/jsp/login.jsp";
		}else{
			request.setAttribute("msg", "用户激活失败,请重新激活!");
			return "/jsp/info.jsp";
		}
	} ```

## 用到的工具

### 随机生成代码
==package cn.itcast.store.utils;

import java.util.UUID;

public class UUIDUtils {
	/**
	 * 随机生成id
	 * @return
	 */
	public static String getId(){
		return UUID.randomUUID().toString().replace("-", "").toUpperCase();
	}
	
	
	public static String getUUID64(){
		return getId()+getId();
	}
	
	/**
	 * 生成随机码
	 * @return
	 */
	public static String getCode(){
		return getId();
	}
	
	public static void main(String[] args) {
		System.out.println(getId());
	}
}==

### 邮箱发送器
package cn.itcast.store.utils;

import java.util.Properties;

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.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class MailUtils {

	public static void sendMail(String email, String emailMsg)
			throws AddressException, MessagingException {
		// 1.创建一个程序与邮件服务器会话对象 Session

		Properties props = new Properties();
		//设置发送的协议
		//props.setProperty("mail.transport.protocol", "SMTP");
		
		//设置发送邮件的服务器
		//props.setProperty("mail.host", "smtp.126.com");
		//props.setProperty("mail.smtp.auth", "true");// 指定验证为true

		// 创建验证器
		Authenticator auth = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				//设置发送人的帐号和密码
				return new PasswordAuthentication("admin@store.com", "root");
			}
		};

		Session session = Session.getInstance(props, auth);

		// 2.创建一个Message,它相当于是邮件内容
		Message message = new MimeMessage(session);

		//设置发送者
		message.setFrom(new InternetAddress("admin@store.com"));

		//设置发送方式与接收者
		message.setRecipient(RecipientType.TO, new InternetAddress(email)); 

		//设置邮件主题
		message.setSubject("用户激活");
		// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");

		String url="http://localhost:8080/store_07/UserServlet?method=active&code="+emailMsg;
		String content="<h1>来自购物天堂的激活邮件!激活请点击以下链接!</h1><h3><a href='"+url+"'>"+url+"</a></h3>";
		//设置邮件内容
		message.setContent(content, "text/html;charset=utf-8");

		// 3.创建 Transport用于将邮件发送
		Transport.send(message);
	}
	public static void main(String[] args) throws AddressException, MessagingException {
		MailUtils.sendMail("aaa@store.com", "1234567890");
		System.out.println("OK");
		
	}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值