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"; } } }
相关推荐
总结起来,Java实现邮箱激活账号的功能涉及了JavaMail API的使用,SMTP协议的理解,以及JWT的生成和验证。这些技术点共同确保了用户注册过程的安全性和有效性。在实际开发中,还需要考虑错误处理、用户体验以及...
java激活邮箱验证功能,就是现如今注册网站时,需要激活邮箱验证的这个功能。
在Java开发中,邮箱注册与激活是一个常见的用户验证机制,用于确保用户提供的电子邮件地址有效且由用户本人控制。本教程将深入讲解如何使用Java实现这一功能,主要涉及JavaMail API和SQL数据库操作。 首先,我们...
【Java注册邮箱激活验证实现】在软件开发中,特别是在用户注册流程中,为了确保用户邮箱的有效性和安全性,通常会采用邮箱激活验证的方式。这个过程包括发送激活邮件到用户提供的邮箱地址,用户点击邮件中的链接来...
在Web开发中,Java邮箱激活代码是用于验证用户注册邮箱的一种常见方法,它增强了网站的安全性和用户体验。这个压缩包文件可能包含了一个完整的Java项目或库,用于实现这种功能。下面,我们将深入探讨Java邮箱激活...
在这个“JavaMail - 注册邮箱激活源码”项目中,我们主要关注的是使用JavaMail进行用户注册时的邮箱验证功能。邮箱激活是一种常见的安全措施,用于确认用户提供的邮箱地址有效且属于用户本人。 首先,让我们深入...
本项目结合Maven构建工具,实现了一个基于邮箱验证的用户注册和激活账号功能。 首先,Maven是Java项目管理和构建工具,通过其POM(Project Object Model)文件管理项目的依赖,自动化构建过程,使得项目构建和维护...
Java 邮箱注册系统设计与实现 在本项目中,我们将使用 SSM 框架实现一个基于 Java 的邮箱注册系统。该系统主要包括注册、发送激活邮件、用户验证等功能。在本文中,我们将详细介绍该系统的设计与实现过程。 一、...
"注册邮箱验证"是这个系统中的一个关键环节,它确保了用户账号的安全性和合法性。在这个过程中,用户在注册时提供一个有效的电子邮箱地址,系统随后会向该邮箱发送一个激活码或激活链接。以下是关于这个主题的详细...
标题“ssm注册邮件激活”指的是使用Spring、SpringMVC和MyBatis(SSM)这一经典的Java web开发框架组合,实现用户注册时通过电子邮件验证激活账号的功能。这个功能是许多网站为了确保用户的真实性以及避免恶意注册而...
本项目“Vue结合SpringBoot注册发送邮件激活”旨在实现用户注册时通过电子邮件验证其身份的功能,这在很多网站中是常见的安全措施。下面将详细解释实现这一功能的关键步骤和技术要点。 1. **Vue.js 前端**: - **...
总的来说,"发邮件激活注册账号"是Web应用中实现用户验证的一种常见方法,通过Java Servlet结合JavaMail API,可以有效地实现这一功能,增强系统的安全性和用户体验。在整个过程中,我们需要关注邮件发送、链接激活...
在JavaEE开发中,账号注册和邮箱激活是一个常见的功能,特别是在构建用户管理系统或者社交网络平台时。本项目涉及的关键知识点包括JavaEE基础、数据库设计、邮箱服务集成以及连接池的使用。 1. **JavaEE基础**:...
这里会用到邮件注册的功能,系统向考生提供的邮箱发送一封包含UUID(无重复的唯一标识符)的激活邮件,考生需点击邮件中的链接完成账号激活。 邮件发送通常采用SMTP(Simple Mail Transfer Protocol)服务,结合...
### Java实现发送邮件知识点详解 #### 一、引言 电子邮件是互联网中最为常见的通信方式之一,被广泛应用于用户激活、密码重置、营销推广等多个场景。为了满足自动化的需求,通常采用程序化的方式进行邮件的发送。...
本项目实践以"商品管理系统"为主题,采用流行的SSM(Spring、SpringMVC、MyBatis)框架进行开发,旨在实现用户注册与验证、邮箱激活以及商品信息的全面管理等功能,从而提升业务效率,优化用户体验。 首先,让我们...
在Java编程语言中,发送邮件是一项常见的功能,尤其在用户注册和验证过程中。"java发邮件注册"这个主题涉及到的是利用JavaMail API来实现通过电子邮件进行用户账户的激活过程。以下将详细介绍这一过程中的关键知识点...
这种授权码将用来验证您的 QQ 邮箱身份,以便发送邮件。 使用 Java 语言发送邮件 下面是一个使用 Java 语言发送邮件的示例代码: 首先,我们需要创建一个 Properties 对象,用于设置 SMTP 服务器的参数: ``` ...
在安全方面,注册时采用了邮箱激活验证,登录则通过随机生成的验证码进行验证。 1. **JSP**:JSP是一种动态网页技术,它允许开发者将Java代码嵌入到HTML页面中。在这个项目中,JSP主要负责展示用户界面,如登录、...