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

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

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

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

3.发送邮件的工具类:

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

 4.发送邮件的Servlet或Action:

  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:

  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. }

最新文章

  1. jquery on和bind
  2. js 九九乘法表
  3. css3新属性
  4. 使用XShell工具密钥认证登录Linux系统
  5. UVaLive 7500 Boxes and Balls (数学)
  6. ubuntu下编译时遇到的错误及解决方式
  7. vistual studio 2012 安装失败,提示Microsoft Vistual Studio 2012 Devenv找不到元素,等错误信息
  8. 《JS权威指南学习总结--8.8.4 记忆函数》
  9. webstrom 编码
  10. Python中的日期和时间
  11. HTML基础1
  12. 设置firefox每次访问网页时检查所存网页的较新版本
  13. python 在ubuntu下安装pycurl
  14. Oracle 闪回 找回数据
  15. Oracle中计算两个日期时间的差
  16. ubuntu 上下左右键变成ABCD
  17. 轻松学C#----第一篇笔记
  18. WordPaster-KesionCMS V9整合教程
  19. 114自定义UITableViewCell(扩展知识:为UITableViewCell添加动画效果)
  20. DHTML和HTML有什么区别?有什么不同

热门文章

  1. 排错:expected unqualified-id before string constant
  2. 判断EditText输入的字符串中是否包含有emoji表情
  3. E. 打击判定 判断矩形是否相交
  4. 洛谷P2827 蚯蚓(单调队列)
  5. NF!=1
  6. SQL server 数据库基础语句
  7. 深度技术GHOST WIN7系统32,64位旗舰稳定版
  8. (二)maven之项目结构
  9. ubuntu 14.04安装 nginx直播服务平台
  10. 自己开发的在线视频下载工具,基于Java多线程