鱼C论坛

 找回密码
 立即注册
查看: 2793|回复: 0

Java实现注册时发送激活邮件验证

[复制链接]
发表于 2017-4-13 13:51:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性。形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册。

  最近项目中也用到这个需求,做了个Demo与大家分享,大至思想如下:

  数据库表结构

  用户表t_user有五个字段分别为用户名、密码、邮箱地址、激活码、状态:

  username | password | email |code | state |

  核心代码:

  UserManager.java

  import java.util.Properties;

  import java.util.UUID;

  import javax.mail.Authenticator;

  import javax.mail.Message;

  import javax.mail.MessagingException;

  import javax.mail.PasswordAuthentication;

  import javax.mail.Session;

  import javax.mail.Transport;

  import javax.mail.Message.RecipientType;

  import javax.mail.internet.AddressException;

  import javax.mail.internet.InternetAddress;

  import javax.mail.internet.MimeMessage;

  import dao.UserDao;

  public class UserManager {

  /**

  * 注册用户

  * @param username 用户名

  * @param password 密码

  * @param email 邮箱

  * @return 是否注册成功

  */

  public Boolean Register(String username,String password,String email){

  Boolean result=false;

  //生成用户code

  String code=UUID.randomUUID()。toString()。replace("-", "");

  //添加用户

  UserDao userDao=new UserDao();

  result=userDao.AddUser(username, password, email, code);

  //向用户发送激活邮件

  sendMail(email,code);

  return result;

  }

  /**

  * 发送激活邮件

  * @param to 收件人邮箱地址

  * @param code 激活码

  */

  public static boolean sendMail(String to, String code) {

  try {

  Properties props = new Properties();

  props.put("username", "123456@163.com");

  props.put("password", "123456");

  props.put("mail.transport.protocol", "smtp" );

  props.put("mail.smtp.host", "smtp.163.com");

  props.put("mail.smtp.port", "25" );

  Session mailSession = Session.getDefaultInstance(props);

  Message msg = new MimeMessage(mailSession);

  msg.setFrom(new InternetAddress("123456@163.com"));

  msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));

  msg.setSubject("激活邮件");

  msg.setContent("<h1>此邮件为官方激活邮件!请点击下面链接完成激活操作!</h1><h3><a href='http://localhost:8080/SendMail/servlet/ActiveServlet?code="+code+"'>http://localhost:8080/SendMail/servlet/ActiveServlet</a></h3>","text/html;charset=UTF-8");

  msg.saveChanges();

  Transport transport = mailSession.getTransport("smtp");

  transport.connect(props.getProperty("mail.smtp.host"), props

  .getProperty("username"), props.getProperty("password"));

  transport.sendMessage(msg, msg.getAllRecipients());

  transport.close();

  } catch (Exception e) {

  e.printStackTrace();

  System.out.println(e);

  return false;

  }

  return true;

  }

  /**

  * 激活用户

  * @param code 用户激活码

  * @return 是否激活成功

  */

  public Boolean Active(String code){

  UserDao userDao=new UserDao();

  String username=userDao.findUserByCode(code);

  if(username!=null && username!="")www.9ask.cn/dongguan/{

  //如果存在用户,将此用户状态设为可用

  userDao.setState(username);

  return true;

  }else{

  return false;

  }

  }

  }

  当用户注册时

  1、为用户生成随机的激活码(此激活码是添加根据代码规则自动生成的,这里的激活码以随机生成的UUID为例);

  2、添加一条用户记录;

  3、向用户发送激活邮件。

  用户点击邮箱中的链接后,系统根据用户点击链接发来的激活码去数据库中查询与该激活码匹配的用户记录,如果记录存在,则将用户状态更改为可用的状态。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 17:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表