如何快速实现邮箱注册(项目案例)

简介: 说起Web项目,学过Java的一定都做过很多,今天就介绍一个常用的功能——邮箱注册。这个功能主要针对面向大众的一些在线系统,比如我们平时注册一些网站,都需要首先提供邮箱,然后系统自动发送邮件到注册邮箱,激活验证通过后才能使用。

说起Web项目,学过Java的一定都做过很多,今天就介绍一个常用的功能——邮箱注册。


这个功能主要针对面向大众的一些在线系统,比如我们平时注册一些网站,都需要首先提供邮箱,然后系统自动发送邮件到注册邮箱,激活验证通过后才能使用。


项目介绍



我们首先搭建项目,框架和数据库随意,演示系统使用的是Servlet,数据库使用Mysql。


项目结构图如下:


image.png



Mysql数据库


20210118111516583.png


演示操作



image.gif


具体实现



为了简化操作,项目只有注册功能。在register页面右键run as,启动后填写注册信息,注册成功后跳转到login,失败跳转到msg。具体细节操作在Servlet,下面我们详细介绍。


Jsp页面创建一个Form,填写注册信息:


<div class="col-md-12" style="width:100%;background:url('${pageContext.request.contextPath}/images/regist_bg.jpg');">
      <div class="col-md-2"></div>
      <div class="col-md-8" style="background:#fff;padding:40px 80px;margin:30px 30px 20px 45px ;border:7px solid #ccc;width:70%">
        <font>会员注册</font>USER REGISTER
        <form class="form-horizontal" name="f_reg" style="margin-top:5px;" method="post" action="${pageContext.request.contextPath}/register" onsubmit="return checkFrom()">
           <div class="form-group">
              <label for="username" class="col-sm-2 control-label">用户名</label>
              <div class="col-sm-6">
                <input type="text" class="form-control" id="username" placeholder="请输入用户名  字母开头后跟数字或下划线" name="username">
              </div>
            </div>
             <div class="form-group">
              <label for="inputPassword3" class="col-sm-2 control-label">密码</label>
              <div class="col-sm-6">
                <input type="password" class="form-control" id="inputPassword3" placeholder="请输入密码,至少6位" name="password">
              </div>
            </div>
             <div class="form-group">
              <label for="confirmpwd" class="col-sm-2 control-label">确认密码</label>
              <div class="col-sm-6">
                <input type="password" class="form-control" id="confirmpwd" placeholder="请输入确认密码" name="password2">
              </div>
            </div>
            <div class="form-group">
              <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
              <div class="col-sm-6">
                <input type="email" class="form-control" id="inputEmail3" placeholder="Email  如 haha520@163.com" name="email">
              </div>
            </div>
           <div class="form-group">
              <label for="usercaption" class="col-sm-2 control-label">姓名</label>
              <div class="col-sm-6">
                <input type="text" class="form-control" id="usercaption" placeholder="请输入姓名" name="realname">
              </div>
            </div>
            <div class="form-group opt">  
            <label for="inlineRadio1" class="col-sm-2 control-label">性别</label>  
            <div class="col-sm-6">
              <label class="radio-inline">
            <input type="radio" name="sex" id="inlineRadio1" value="男" checked> 男
          </label>
          <label class="radio-inline">
            <input type="radio" name="sex" id="inlineRadio2" value="女"> 女
          </label>
          </div>
            </div>    
            <div class="form-group">
              <label for="date" class="col-sm-2 control-label">出生日期</label>
              <div class="col-sm-6">
                <input type="date" class="form-control" placeholder="请输入日期" onclick="laydate()"  name="birthday">         
              </div>
            </div>
            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <input type="submit"  width="100" value="注册" name="submit" border="0"
                style="background: url('${pageContext.request.contextPath}/images/register.gif') no-repeat scroll 0 0 rgba(0, 0, 0, 0);
                height:35px;width:100px;color:white;">
              </div>
            </div>
        </form>
      </div>


Servlet中,我们需要使用163邮箱作为发送端,在里面配置上个人邮箱及密码即可,代码:


@SuppressWarnings("serial")
public class RegisterServlet extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
    String email = request.getParameter("email");
    Map<String, String[]> map = request.getParameterMap();
    //2、封装成User对象
    User u = new User();
    MyBeanUtils.populate(u, map);
    //3、调用Service层完成功能
    UserService us = new UserServiceImpl();
    boolean b = us.insertUser(u);
    try { 
      String from = "你的邮箱"; // 获取发件人 
      String to = email; // 获取收件人 
      String subject = "恭喜你,注册成功"; // 获取邮件主题 
      String messageText = "欢迎你注册本网站,你现在已经注册成功,请返回到登录界面登录,更多优惠,更多精彩!"; // 获取邮件内容 
      String ddd = "邮箱密码"; // 获取发件人邮箱密码 
      String mailserver = "smtp.163.com"; // 指定SMTP服务器的主机名 
      // 建立邮件会话 
      Properties props = new Properties(); 
      props.put("http.proxySet","true");//设置代理主机参数  
      props.put("http.proxyHost","172.17.18.80");  
      props.put("http.proxyPort","8080");  
      props.put("mail.smtp.host", mailserver); // 指定SMTP协议 
      props.put("mail.smtp.auth", "true"); // 指定需要向服务器端提交身份认证 
      Session sess = Session.getInstance(props); // 获取session 
      sess.setDebug(true); // 设置调试标志 
      MimeMessage message = new MimeMessage(sess); // 新建一个消息对象 
      // 设置发件人 
      InternetAddress from_mail = new InternetAddress(from); 
      message.setFrom(from_mail); 
      // 设置收件人 
      InternetAddress to_mail = new InternetAddress(to); 
      message.setRecipient(Message.RecipientType.TO, to_mail); 
      // 设置主题 
      message.setSubject(subject); 
      // 设置内容 
      message.setText(messageText); 
      // 设置发送时间 
      message.setSentDate(new Date()); 
      // 发送邮件 
      message.saveChanges(); // 保证报头域同会话内容保持一致 
      Transport transport = sess.getTransport("smtp"); 
      transport.connect(mailserver, from, ddd); // 建立与邮件服务器之间的连接 
      transport.sendMessage(message, message.getAllRecipients()); // 发送邮件 
      transport.close(); // 关闭与邮件服务器之间的连接 
      //4、响应注册的结果   
      if(b){        
        request.setAttribute("msg","请到邮箱验证是否注册成功!");
        us.updatestatus(u);
        request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
      }else{
        request.setAttribute("msg","对不起,注册失败,请联系管理员!");
        request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
      }
      } catch (Exception e) { 
        request.setAttribute("msg","对不起,注册失败,请检查 邮箱是否正确!");
        request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
      } 
  }


如果注册成功,则写入数据库中:


public class UserDaoImpl implements UserDao {
  //DBUtils的核心类,用于执行sql语句的核心对象
  private QueryRunner runner = new  QueryRunner();
  //1、注册用户的方法
  public int insertUser(User u) {
    //1、编写sql
    String sql = "insert into user values(null,?,?,?,?,?,?,?,null)";
    //2、准备参数与结果集,参数为数组,结果集为int类型的结果
    Object[] parm = {u.getUsername(),u.getPassword(),u.getRealname(),u.getEmail(),u.getSex(),u.getBirthday(),0};
    int i=0;
    try {
      //3、获取连接对象,使用QueryRunner对象执行sql语句
      i=runner.update(JDBCUtils.getConnection(), sql, parm);
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return i;
  }
  public int updatestatus(User u) {
    //1、编写sql
    QueryRunner qr= new QueryRunner();
    String sql = "update user set status = ? where username = ?";
    try {
      qr.update(JDBCUtils.getConnection(), sql, 1,u.getUsername());
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return 1;
  }
}


以上就是具体实现过程,如果你有任何问题,欢迎私信,我们共同交流讨论。


相关文章
|
13天前
|
自然语言处理 数据安全/隐私保护
Chatgpt注册账号详细教程!
本文介绍了ChatGPT的基本用途及注册流程,包括注册前的准备(如稳定网络和有效邮箱)和详细步骤(如访问官网、填写信息、设置密码、邮箱验证、个人信息设置)。新手必读,助你轻松上手。
|
2月前
|
安全 双11
最新阿里云国际版支付方式以及注册教程和方法
最新阿里云国际版支付方式以及注册教程和方法
|
2月前
|
监控 安全 搜索推荐
新手指南:Google邮箱注册全过程步骤教学
对于从事外贸、需要与外国客户或朋友沟通的小伙伴来说,拥有一个Google账号(也就是Gmail账号,下文统一用Google邮箱来表述)至关重要!
|
7月前
|
小程序 前端开发 程序员
微信小程序开发入门教程-小程序账号注册及开通
微信小程序开发入门教程-小程序账号注册及开通
|
XML 缓存 NoSQL
手把手实现第三方社交登录方式微信登录
手把手实现第三方社交登录方式微信登录
169 0
|
数据安全/隐私保护
阿里云国际版账户简便注册流程
如需注册阿里云国际版账号,可以与alicloudlx联系,只需要一个邮箱就ok了,简单快捷
阿里云国际版账户简便注册流程
|
前端开发 JavaScript 应用服务中间件
谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现(二)
谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现(二)
谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现(二)
|
存储 JSON 算法
谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现(一)
谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现(一)
谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现(一)
|
弹性计算 对象存储 CDN
阿里云账号注册流程(新手教程)
阿里云账号怎么注册?阿里云账号注册流程分为手机号注册、阿里云APP注册、支付宝和钉钉多种注册方式
1767 0
阿里云账号注册流程(新手教程)
|
安全 Java 黑灰产治理
注册中验证码实现(项目案例)
今天,给大家介绍验证码的相关配置问题。众所周知,对传统验证码而言,便捷和安全长期以来一直是鱼与熊掌的关系。这可从12306与黄牛的博弈中看出端倪。
注册中验证码实现(项目案例)