java 邮箱验证

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

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

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

Java代码  收藏代码
  1. import java.io.UnsupportedEncodingException;  
  2. import java.security.MessageDigest;  
  3. import java.security.NoSuchAlgorithmException;  
  4.   
  5. /** 
  6.  * 创建人: zy 
  7.  * 创建时间: 2014年10月22日 下午2:36:19 
  8.  * 类描述:将字符串进行加密的工具类 
  9.  */  
  10. public class MD5Util {  
  11.   
  12.     /** 
  13.      * 将源字符串通过MD5进行加密为字节数组 
  14.      * @param source 
  15.      * @return 
  16.      */  
  17.     public static byte[] encodeToBytes(String source) {  
  18.         byte[] result  = null;  
  19.         try {  
  20.             MessageDigest md = MessageDigest.getInstance("MD5");  
  21.             md.reset();//重置  
  22.             md.update(source.getBytes("UTF-8"));//添加需要加密的源  
  23.             result = md.digest();//加密  
  24.         } catch (NoSuchAlgorithmException e) {  
  25.             e.printStackTrace();  
  26.         } catch (UnsupportedEncodingException e) {  
  27.             e.printStackTrace();  
  28.         }  
  29.         return result;  
  30.     }  
  31.       
  32.     /** 
  33.      * 将源字符串通过MD5加密成32位16进制数 
  34.      * @param source 
  35.      * @return 
  36.      */  
  37.     public static String encodeToHex(String source) {  
  38.         byte[] data = encodeToBytes(source);//先加密为字节数组  
  39.         StringBuffer hexSb = new StringBuffer();  
  40.         for (int i = 0; i < data.length; i++) {  
  41.             String hex = Integer.toHexString(0xff & data[i]);  
  42.             if (hex.length() == 1) {  
  43.                 hexSb.append("0");  
  44.             }  
  45.             hexSb.append(hex);  
  46.         }  
  47.         return hexSb.toString();  
  48.     }  
  49.       
  50.     /** 
  51.      * 验证字符串是否匹配 
  52.      * @param unknown   待验证的字符串 
  53.      * @param okHex     使用MD5加密后的16进制字符串 
  54.      * @return 
  55.      */  
  56.     public static boolean validate(String unknown , String okHex) {  
  57.         return okHex.equals(encodeToHex(unknown));  
  58.     }  
  59. }  

3.发送邮件的工具类:

Java代码  收藏代码
  1. import java.util.Date;  
  2. import java.util.Properties;  
  3.   
  4. import javax.mail.Authenticator;  
  5. import javax.mail.Message;  
  6. import javax.mail.MessagingException;  
  7. import javax.mail.PasswordAuthentication;  
  8. import javax.mail.Session;  
  9. import javax.mail.Transport;  
  10. import javax.mail.internet.AddressException;  
  11. import javax.mail.internet.InternetAddress;  
  12. import javax.mail.internet.MimeMessage;  
  13.   
  14. /** 
  15.  * 创建人: zy 
  16.  * 创建时间: 2014年10月22日 下午3:04:11 
  17.  * 类描述:发送邮件工具类 
  18.  */  
  19. public class SendMailUtil {  
  20.       
  21.     public static final String HOST = "smtp.163.com";  
  22.     public static final String PROTOCOL = "smtp";  
  23.     public static final int PORT = 25;  
  24.     public static final String SENDER = "***@163.com";//此处需要与host相同的网站  
  25.     public static final String SENDERPWD = "********";  
  26.       
  27.     /** 
  28.      * 获取用于发送邮件的Session 
  29.      * @return 
  30.      */  
  31.     public static Session getSession() {  
  32.         Properties props = new Properties();  
  33.         props.put("mail.smtp.host", HOST);//设置服务器地址  
  34.         props.put("mail.store.protocol" , PROTOCOL);//设置协议  
  35.         props.put("mail.smtp.port", PORT);//设置端口  
  36.         props.put("mail.smtp.auth" , true);  
  37.           
  38.         Authenticator authenticator = new Authenticator() {  
  39.             @Override  
  40.             protected PasswordAuthentication getPasswordAuthentication() {  
  41.                 return new PasswordAuthentication(SENDER, SENDERPWD);  
  42.             }  
  43.         };  
  44.         Session session = Session.getDefaultInstance(props,authenticator);  
  45.         return session;  
  46.     }  
  47.       
  48.     /** 
  49.      * 发送邮件 
  50.      * @param receiver 
  51.      * @param content 
  52.      */  
  53.     public static void send(String receiver, String content) {  
  54.         Session session = getSession();  
  55.         try {  
  56.             System.out.println("-------开始发送-------");  
  57.             Message msg = new MimeMessage(session);  
  58.             //设置message属性  
  59.             msg.setFrom(new InternetAddress(SENDER));  
  60.             InternetAddress[] addrs = {new InternetAddress(receiver)};  
  61.             msg.setRecipients(Message.RecipientType.TO, addrs);  
  62.             msg.setSubject("开心网-帐号激活");  
  63.             msg.setSentDate(new Date());  
  64.             msg.setContent(content,"text/html;charset=utf-8");  
  65.             //开始发送  
  66.             Transport.send(msg);  
  67.                         System.out.println("-------发送完成-------");  
  68.         } catch (AddressException e) {  
  69.             e.printStackTrace();  
  70.         } catch (MessagingException e) {  
  71.             e.printStackTrace();  
  72.         }  
  73.     }  
  74. }  

 4.发送邮件的Servlet或Action:

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

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

Java代码  收藏代码
  1. String userName = request.getParameter("name");  
  2. String email = request.getParameter("email");  
  3. UserPostDao userDao = new UserPostDao();  
  4. User user = userDao.getUserByEmail(email);  
  5. if (user == null) {  
  6.     destination = "/register/activeFail.jsp";  
  7.     request.setAttribute("msg", "链接错误");  
  8. }  
  9. else {  
  10.     String userNameMd5 = MD5Util.encodeToHex(user.getUsername()+"审核通过");  
  11.     if (!(userName.equals(userNameMd5)) {  
  12.         request.setAttribute("msg", "链接错误");  
  13.         destination = "/register/activeFail.jsp";  
  14.     }  
  15.     else {  
  16.         boolean done = userDao.updateUserStatusByEmail(email, 1);  
  17.         if (done) {  
  18.             request.setAttribute("userId", user.getUserid());  
  19.             request.setAttribute("userName", user.getUsername());  
  20.             destination = "/register/activeSuccess.jsp";  
  21.         }  
  22.         else {  
  23.             request.setAttribute("msg", "激活出错");  
  24.             destination = "/register/activeFail.jsp";  
  25.         }  
  26.     }  
  27. }  
原文地址:https://www.cnblogs.com/ouyangping/p/6688453.html