Java注册帐号邮箱激活验证实现

Java注册帐号邮箱激活验证实现

1.需要加入发送邮件的mail.jar:

http://www.oracle.com/technetwork/java/javamail/index-138643.html

?

2.将字符串通过MD5进行加密的工具类:

class="java">import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 创建人: zy
 * 创建时间: 2014年10月22日 下午2:36:19
 * 类描述:将字符串进行加密的工具类
 */
public class MD5Util {

	/**
	 * 将源字符串通过MD5进行加密为字节数组
	 * @param source
	 * @return
	 */
	public static byte[] encodeToBytes(String source) {
		byte[] result  = null;
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.reset();//重置
			md.update(source.getBytes("UTF-8"));//添加需要加密的源
			result = md.digest();//加密
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * 将源字符串通过MD5加密成32位16进制数
	 * @param source
	 * @return
	 */
	public static String encodeToHex(String source) {
		byte[] data = encodeToBytes(source);//先加密为字节数组
		StringBuffer hexSb = new StringBuffer();
		for (int i = 0; i < data.length; i++) {
			String hex = Integer.toHexString(0xff & data[i]);
			if (hex.length() == 1) {
				hexSb.append("0");
			}
			hexSb.append(hex);
		}
		return hexSb.toString();
	}

	/**
	 * 验证字符串是否匹配
	 * @param unknown	待验证的字符串
	 * @param okHex		使用MD5加密后的16进制字符串
	 * @return
	 */
	public static boolean validate(String unknown , String okHex) {
		return okHex.equals(encodeToHex(unknown));
	}
}

?

?

3.发送邮件的工具类:

import java.util.Date;
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;

/**
 * 创建人: zy
 * 创建时间: 2014年10月22日 下午3:04:11
 * 类描述:发送邮件工具类
 */
public class SendMailUtil {

	public static final String HOST = "smtp.163.com";
	public static final String PROTOCOL = "smtp";
	public static final int PORT = 25;
	public static final String SENDER = "***@163.com";//此处需要与host相同的网站
	public static final String SENDERPWD = "********";

	/**
	 * 获取用于发送邮件的Session
	 * @return
	 */
	public static Session getSession() {
		Properties props = new Properties();
		props.put("mail.smtp.host", HOST);//设置服务器地址
        props.put("mail.store.protocol" , PROTOCOL);//设置协议
        props.put("mail.smtp.port", PORT);//设置端口
        props.put("mail.smtp.auth" , true);

        Authenticator authenticator = new Authenticator() {
        	@Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(SENDER, SENDERPWD);
            }
		};
        Session session = Session.getDefaultInstance(props,authenticator);
        return session;
	}

	/**
	 * 发送邮件
	 * @param receiver
	 * @param content
	 */
	public static void send(String receiver, String content) {
		Session session = getSession();
		try {
			System.out.println("-------开始发送-------");
			Message msg = new MimeMessage(session);
			//设置message属性
			msg.setFrom(new InternetAddress(SENDER));
			InternetAddress[] addrs = {new InternetAddress(receiver)};
			msg.setRecipients(Message.RecipientType.TO, addrs);
			msg.setSubject("开心网-帐号激活");
			msg.setSentDate(new Date());
			msg.setContent(content,"text/html;charset=utf-8");
			//开始发送
			Transport.send(msg);
                        System.out.println("-------发送完成-------");
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
}

?

?4.发送邮件的Servlet或Action:

User user = userDao.getUser();
if (user != null && user.getQybj() != 1) {
	String email = user.getEmail();
  	StringBuffer content = new StringBuffer("<h2>请点击下面的链接激活帐号,链接只能使用一次,请尽快激活!</h2>");
  	String nameMd5 = MD5Util.encodeToHex(user.getUsername()+"审核通过");//创建加密字符串
  	content.append("<a style=‘font-size:16px;‘ href=‘http://localhost:8080/czfc/register.reg?doType=activate&")
  	.append("email=" + email + "&name=" + nameMd5 +"‘>")
  	.append("http://localhost:8080/czfc/register.reg?doType=activate&")
  	.append("email=" + email + "&name=" + nameMd5 + "</a><br/><br/>")
  	.append("<span style=‘color:blue;font-size:20px;font-weight:bold;‘>———浙江常山欢迎您!<span>");
  	SendMailUtil.send(email, content.toString());//开始发送邮件
} 

?

5.点击链接验证的Servlet或Action:

String userName = request.getParameter("name");
String email = request.getParameter("email");
UserPostDao userDao = new UserPostDao();
User user = userDao.getUserByEmail(email);
if (user == null) {
	destination = "/register/activeFail.jsp";
	request.setAttribute("msg", "链接错误");
}
else {
	String userNameMd5 = MD5Util.encodeToHex(user.getUsername()+"审核通过");
	if (!(userName.equals(userNameMd5)) {
		request.setAttribute("msg", "链接错误");
		destination = "/register/activeFail.jsp";
	}
	else {
		boolean done = userDao.updateUserStatusByEmail(email, 1);
		if (done) {
			request.setAttribute("userId", user.getUserid());
			request.setAttribute("userName", user.getUsername());
			destination = "/register/activeSuccess.jsp";
		}
		else {
			request.setAttribute("msg", "激活出错");
			destination = "/register/activeFail.jsp";
		}
	}
}

?


?

?

    • 查看图片附件
时间: 2024-10-13 08:01:57

Java注册帐号邮箱激活验证实现的相关文章

Java实现注册邮箱激活验证

邮件发送servelet实现 package com.xbs.register.main; import java.io.IOException;import java.util.Date;import java.util.Properties; import javax.mail.Address;import javax.mail.Authenticator;import javax.mail.Message.RecipientType;import javax.mail.MessagingE

用java实现邮箱的验证以及激活

1.需要的jar文件 2.需要的新建的包 说明:dao[接口:实体和数据交互].entity[实体类].filter[过滤器].service[接口:业务层,里面的方法和dao层一样,只不过dao层直接连接数据库,而它是调用dao层的方法].servlet[jsp页面的一些处理].util[一些工具类] 3.新建的jsp文件 说明:index.jsp[登录界面].regmail[注册页面].activeSuc.jsp[激活成功页面] 4.业务流程: 新建regmail.jsp→regservle

java实现注册邮箱激活验证(一)

一般情况注册账户激活时有发送六位数字激活码和发送激活地址两种常见的方式,今天来总结一下 一.发送六位数字激活码的方式,下一篇博客介绍发送激活地址的方式(用qq邮箱或者163邮箱发邮件,注意前提是要拿到授权码滴,下文有说到) 1.新建一个maven项目,结构如下 2.pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundat

servlet邮箱激活验证实例含代码

也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到数据库中,其中用户状态为未激活 系统发送一封邮件并通知用户去验证 用户登录邮箱并点击激活链接 系统将用户状态更改为已激活并通知用户注册成功 相关知识点 JSP和Servlet Maven MySQL c3p0 SMTP协议和POP3协议 1.在邮箱设置中将下图的服务器开启,本案例使用的是QQ邮箱为发

java邮箱正则验证

import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test{ public static void main(String args[]){ System.out.println(test.isEmail("[email protected]")); } public static boolean isEmail(String email){

用户注册的邮箱激活模块的设计与实现

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52144698作者:朱培      ID:sdksdk0      邮箱: [email protected] --------------------------

转:java 帐号激活与忘记密码 实例

原文链接:http://endual.iteye.com/blog/1613679 一.帐户激活 在 很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激活邮件,这封邮件的内容就是一个激活帐户的链接和一段 简短的文字描述,如果用户没有去邮箱将帐户激活,可能在使用网站的某些功能时就会受到限制,比如不能发贴.下载资料.评论等限制.这么做的原因应该是为了 保证帐户的安全性和邮箱的有效性,以后网站如果有什么活动.资讯或系统安全通知等,可以在第一时间通知到用户.比

【JavaMailWeb】用户注册通过邮箱激活案例

转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 前面刚刚学习了JavaMail技术,现在来应用到项目中试试~ 网站用户注册: 主要实现如下两个功能: 1.用户在网站上注册完成后给用户发一封邮件. 2.用户通过邮件激活后才可以登录. 思路: 首先需要一个思路: 用户在前台点击注册,向servlet提交请求,把用户提交过来的信息封装成一个JavaBean(需要的信息有name,pwd,email这3个是用户填写的,我们帮用户生成的

java的几种验证

package com.cn.wangk.util; import java.util.HashMap;import java.util.regex.Matcher;import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger; // 网站域名 联系电话 手机号码 邮政编码 邮箱public class Validation { private s