`

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

    博客分类:
  • Java
阅读更多

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

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

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

 

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

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";
		}
	}
}

 



 

 

  • 大小: 18.1 KB
  • 大小: 17.3 KB
分享到:
评论

相关推荐

    Java实现邮箱激活账号

    总结起来,Java实现邮箱激活账号的功能涉及了JavaMail API的使用,SMTP协议的理解,以及JWT的生成和验证。这些技术点共同确保了用户注册过程的安全性和有效性。在实际开发中,还需要考虑错误处理、用户体验以及...

    java激活邮箱验证资料

    java激活邮箱验证功能,就是现如今注册网站时,需要激活邮箱验证的这个功能。

    java 实现邮箱注册与激活

    在Java开发中,邮箱注册与激活是一个常见的用户验证机制,用于确保用户提供的电子邮件地址有效且由用户本人控制。本教程将深入讲解如何使用Java实现这一功能,主要涉及JavaMail API和SQL数据库操作。 首先,我们...

    web java邮箱激活代码

    在Web开发中,Java邮箱激活代码是用于验证用户注册邮箱的一种常见方法,它增强了网站的安全性和用户体验。这个压缩包文件可能包含了一个完整的Java项目或库,用于实现这种功能。下面,我们将深入探讨Java邮箱激活...

    JavaMail - 注册邮箱激活源码

    在这个“JavaMail - 注册邮箱激活源码”项目中,我们主要关注的是使用JavaMail进行用户注册时的邮箱验证功能。邮箱激活是一种常见的安全措施,用于确认用户提供的邮箱地址有效且属于用户本人。 首先,让我们深入...

    SSM+maven+邮箱激活账号

    本项目结合Maven构建工具,实现了一个基于邮箱验证的用户注册和激活账号功能。 首先,Maven是Java项目管理和构建工具,通过其POM(Project Object Model)文件管理项目的依赖,自动化构建过程,使得项目构建和维护...

    Java邮箱注册

    Java 邮箱注册系统设计与实现 在本项目中,我们将使用 SSM 框架实现一个基于 Java 的邮箱注册系统。该系统主要包括注册、发送激活邮件、用户验证等功能。在本文中,我们将详细介绍该系统的设计与实现过程。 一、...

    注册邮箱验证

    "注册邮箱验证"是这个系统中的一个关键环节,它确保了用户账号的安全性和合法性。在这个过程中,用户在注册时提供一个有效的电子邮箱地址,系统随后会向该邮箱发送一个激活码或激活链接。以下是关于这个主题的详细...

    ssm注册邮件激活

    标题“ssm注册邮件激活”指的是使用Spring、SpringMVC和MyBatis(SSM)这一经典的Java web开发框架组合,实现用户注册时通过电子邮件验证激活账号的功能。这个功能是许多网站为了确保用户的真实性以及避免恶意注册而...

    Vue结合SpringBoot注册发送邮件激活.zip

    本项目“Vue结合SpringBoot注册发送邮件激活”旨在实现用户注册时通过电子邮件验证其身份的功能,这在很多网站中是常见的安全措施。下面将详细解释实现这一功能的关键步骤和技术要点。 1. **Vue.js 前端**: - **...

    发邮件激活注册账号

    总的来说,"发邮件激活注册账号"是Web应用中实现用户验证的一种常见方法,通过Java Servlet结合JavaMail API,可以有效地实现这一功能,增强系统的安全性和用户体验。在整个过程中,我们需要关注邮件发送、链接激活...

    JavaEE账号注册模拟网站邮箱激活

    在JavaEE开发中,账号注册和邮箱激活是一个常见的功能,特别是在构建用户管理系统或者社交网络平台时。本项目涉及的关键知识点包括JavaEE基础、数据库设计、邮箱服务集成以及连接池的使用。 1. **JavaEE基础**:...

    Java实现发送邮件.pdf

    ### Java实现发送邮件知识点详解 #### 一、引言 电子邮件是互联网中最为常见的通信方式之一,被广泛应用于用户激活、密码重置、营销推广等多个场景。为了满足自动化的需求,通常采用程序化的方式进行邮件的发送。...

    java web考试报名系统

    这里会用到邮件注册的功能,系统向考生提供的邮箱发送一封包含UUID(无重复的唯一标识符)的激活邮件,考生需点击邮件中的链接完成账号激活。 邮件发送通常采用SMTP(Simple Mail Transfer Protocol)服务,结合...

    商品管理系统,使用ssm框架开发,包括用户注册及校验、邮箱激活、对商品信息的增删改查等.zip

    本项目实践以"商品管理系统"为主题,采用流行的SSM(Spring、SpringMVC、MyBatis)框架进行开发,旨在实现用户注册与验证、邮箱激活以及商品信息的全面管理等功能,从而提升业务效率,优化用户体验。 首先,让我们...

    java发邮件注册

    在Java编程语言中,发送邮件是一项常见的功能,尤其在用户注册和验证过程中。"java发邮件注册"这个主题涉及到的是利用JavaMail API来实现通过电子邮件进行用户账户的激活过程。以下将详细介绍这一过程中的关键知识点...

    qq邮箱如何开启smtp并且获取授权码.docx

    这种授权码将用来验证您的 QQ 邮箱身份,以便发送邮件。 使用 Java 语言发送邮件 下面是一个使用 Java 语言发送邮件的示例代码: 首先,我们需要创建一个 Properties 对象,用于设置 SMTP 服务器的参数: ``` ...

    基于jsp+servlet实现的通讯录 通讯录.zip

    在安全方面,注册时采用了邮箱激活验证,登录则通过随机生成的验证码进行验证。 1. **JSP**:JSP是一种动态网页技术,它允许开发者将Java代码嵌入到HTML页面中。在这个项目中,JSP主要负责展示用户界面,如登录、...

    JavaMail帐号激活与忘记密码实例源码

    在注册新用户时,通常会通过发送一封带有激活链接的电子邮件来验证用户的邮箱地址。这个过程涉及以下步骤: - 使用JavaMail创建一封包含激活链接的邮件。 - 设置邮件的发件人、收件人、主题和内容。 - 使用SMTP...

Global site tag (gtag.js) - Google Analytics