JavaMai——邮箱验证用户注册
这篇文章简单的模拟了网上利用邮箱激活用户注册这样的一个功能
1. 呈现给用户的注册界面:(为了简单起见,就剩下两个输入域,邮箱和昵称)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>用户注册利用邮箱进行验证</title> </head> <body> <br/><form action="${pageContext.request.contextPath }/servlet/RegisterServlet" method="post"><font size="24" color="red">用户注册</font><br/>邮箱:<input type="text" name="email" /><br/>昵称:<input type="text" name="userName" /><br/><input type="submit" value="submit" /><br/></form> </body></html>package com.piedra.register;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.MessagingException;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.piedra.model.MyAuthenticator;public class RegisterServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String toMail = request.getParameter("email");String registerName = request.getParameter("userName");String userName = "你邮箱地址";String password = "你邮箱密码";String registerId = "" + Math.random() * Math.random();String url = "http://localhost:8080/JavaMailChecker/servlet/MailBackServlet?registerId=" + registerId;//待会用户点在邮箱中点击这个链接回到你的网站。HttpSession httpSession = request.getSession();httpSession.setAttribute(registerId, registerName);httpSession.setMaxInactiveInterval(600);Properties props = new Properties();props.setProperty("mail.smtp.host", "smtp.163.com");props.setProperty("mail.smtp.auth", "true");Authenticator authenticator = new MyAuthenticator(userName, password);javax.mail.Session session = javax.mail.Session.getDefaultInstance(props,authenticator);session.setDebug(true);try{Address from = new InternetAddress(userName);Address to = new InternetAddress(toMail);MimeMessage msg = new MimeMessage(session);msg.setFrom(from);msg.setSubject("诚实网站注册");msg.setSentDate(new Date());msg.setContent("<a href='" + url + "'>点击" + url + "完成注册</a>", "text/html;charset=utf-8");msg.setRecipient(RecipientType.TO, to);/*Transport transport = session.getTransport("smtp");transport.connect("smtp.163.com", userName, password);transport.sendMessage(msg,msg.getAllRecipients());transport.close();*/Transport.send(msg);} catch(MessagingException e){e.printStackTrace();}request.getRequestDispatcher("/sendMailSuccess.jsp").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}package com.piedra.model;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class MyAuthenticator extends Authenticator {private String userName;private String password;public MyAuthenticator(String userName, String password){this.userName = userName;this.password = password;}@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, password);}}package com.piedra.register;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MailBackServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String registerID = request.getParameter("registerId");if(registerID == null){request.getRequestDispatcher("/index.jsp").forward(request,response);return ;}String registerName = (String)request.getSession().getAttribute(registerID);if(registerName == null || registerName.equals("")){request.getRequestDispatcher("/index.jsp").forward(request,response);return ;}request.setAttribute("registerName", registerName);request.getRequestDispatcher("/registSuccess.jsp").forward(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>注册成功</title> </head> <body> 恭喜您,从现在起,您就是本站的一员了。<br/> 下面是您的昵称:<br/> ${registerName } </body></html>


