zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    2021-06-13 助教一周小结(第十九周)
    2021-06-06 助教一周小结(第十八周)
    2021-05-30 助教一周小结(第十七周)
    2021-05-23 助教一周小结(第十六周)
    2021-05-15 助教一周小结(第十五周)
    2021-05-09 助教一周小结(第十四周)
    个人总结-逆风方向,适合飞翔
    第二次结对作业
    结对作业
    随笔排版如何插入比较好看的样式。
  • 原文地址:https://www.cnblogs.com/ouyangping/p/6688453.html
Copyright © 2011-2022 走看看