承接上篇博客,小乖讲述了网上商城的注册过程,用户可以注册账号到数据库中,下面就是如何激活新注册的账号了。我们平时都有自己的邮箱,而且小乖一直在用foxmail客户端软件来收取邮件。当我们发送一封邮件的时候,首先要知道收件人地址,那下面我们就来看一下邮件发送的全过程:
而收邮件正好是一个相反的过程。接下来我们要自己搭建一个邮箱服务器。首先安装邮箱服务器软件eyoumail,修改域名为shop.com,同时新建一个我们的服务器邮箱和几个账号。
客户端软件就用户我们平时常用的foxmail或者outlook,配置发送和接收邮箱服务器为localhost。
接下来,我们就可以代码实现发送邮件了
一、发送邮件
新建一个工具类,发送邮件的方法
/** * 发送邮件的方法 * @param to:收件人 * @param code:激活码 */ public static void sendMail(String to,String code){ /** * 1.获得一个Session对象。 * 2.创建一个代表邮件的对象Message * 3.发送邮件Transport */ //1.获得连接对象 Properties props=new Properties(); props.setProperty("MailUitls.host", "localhost"); Session session = Session.getInstance(props,new Authenticator() { protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication("[email protected]", "111"); } }); //2.创建邮件对象: Message message=new MimeMessage(session); //设置发件人: try { message.setFrom(new InternetAddress("[email protected]")); //设置收件人: message.addRecipient(RecipientType.TO, new InternetAddress(to)); // 抄送CC 密送BCC //设置标题 message.setSubject("来自购物天堂小乖商城官方激活邮件"); //设置邮件正文 message.setContent("<h1>购物天堂小乖商城官方激活邮件!点下面链接完成激活操作!</h1><h3><a href='http://localhost:8080/shop/user_active.action?code="+code+"'>http://localhost:8080/shop/user_active.action?code="+code+"</a></h3>", "text/html;charset=UTF-8"); //3.发送邮件: Transport.send(message); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } }
在service层中调用发送邮件的方法
//业务层完成用户注册代码: public void save(User user) { //将数据存入到数据库 user.setState(0); //0:代表用户未激活。 1:代表用户已经激活 //调用工具类来生成随机字符 String code=UUIDUtils.getUUID()+UUIDUtils.getUUID(); user.setCode(code); userDao.save(user); //发送激活邮件; MailUitls.sendMail(user.getEmail(), code); }
到此为止,注册一个新用户邮件就发到新用户的邮箱了。
二、用户激活:
1.在邮箱客户端中点击激活链接:
根据传递激活码进行用户查询
action激活方法
public String active(){ //根据激活码查询用户 User existUser=userService.findByCode(user.getCode()); //判断 if(existUser == null){ //激活码是错误的 this.addActionMessage("激活失败:激活码错误!"); } else { //激活成功 //修改用户的状态 existUser.setState(1); existUser.setCode(null); userService.update(existUser); this.addActionMessage("激活成功!:请去登录"); } return "msg"; }
service层方法findByCode
//业务层根据激活码查询用户 public User findByCode(String code) { return userDao.FindByCode(code); } //修改用户状态的方法 public void update(User existUser) { userDao.update(existUser); }
Dao层激活方法
public User FindByCode(String code){ String hql="from User where code = ?"; List<User> list=this.getHibernateTemplate().find(hql,code); if(list != null && list.size()>0){ return list.get(0); } return null; } //修改用户状态的方法 public void update(User existUser) { this.getHibernateTemplate().update(existUser); }
总结:
网上商城跟着到这一步,小编终于是明白了一些网站注册之后的激活邮件是怎么做出来的了。虽然注册完之后这些邮件都当做垃圾拖进垃圾箱。当你注册并激活了小乖的网站内心表示还蛮激动的。当然啦,现在只是在自己的电脑上测试,所以一些重定向啊之类的都还是localhost呢。我想作为一个网站运营商可以通过激活邮件的用户的多少来查询每天有多少用户注册了吧,不过数据库可以直接显示的,或者网站后台应该会有这样的功能,小乖想多了!那就当做一个验证身份的过程把!