这篇文章简单的模拟了网上利用邮箱激活用户注册这样的一个功能 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>
2. 用户点击提交后,应该在后台进行发送邮件的处理,在这之前,你可能需要利用javascript对邮箱进行匹配处理,以及对用户大部分的输入情况进行验证,如果有验证码的话,应该首先验证(可以通过AJAX进行验证)。但是我在这里也就不验证了,直接假设用户输入是正确的。下面是后台处理程序:
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("