javamail实现注册激活邮件

本文实例为大家分享了javamail注册激活邮件的具体代码,供大家参考,具体内容如下

需要的jar包

1.MySQL驱动包
2.mail.jar包

SMTP和POP3协议概述

SMTP协议称为简单邮件传输协议,是一组用于从原地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP的协议簇,SMTP是负责邮件服务器之间的寄信的通信协定 POP3协议称为邮局协议版本3,也是TCP/IP协议簇的一员,基于POP3协议的服务器是用来接收信件的。每个Email地址一般只有一个如果想要同时收取多个邮箱的信件,就需要挨个设置每个邮箱的POP3服务器地址。

核心代码实现

#创建数据库表
create database javamail;
use javamail;
create table user(
 id int primary key auto_increment,
 username varchar(30) not null,
 password varchar(30) not null,
 nickname varchar(30) not null,
 email varchar(30) not null,
 state int default 0, #标识是否已经激活 0未激活1已激活
 code varchar(64) not null
);

//创建数据库对应的javabean
public class UserBean{
 private Integer id;
 private String username;
 private String password;
 private String nickname;
 private String email;
 private Integer state;
 private String code;
 //省略setter and getter
}

//数据库操作类UserDao
public class UserDao{
 private Connection conn ;
 //获取数据库连接
 public void getConn(){
  Class.forName("com.mysql.jdbc.Driver");
  String url = "mysql:jdbc://localhost:3306/javamail";
  String rootname = "root";
  String rootpass = "chengxi";
  conn = DriverManager.getConnection(url,rootname,rootpass);
 }

 //注册
 public void regist(UserBean user){

  String sql = "insert into user(username,password,nickname,email,code) values(?,?,?,?,?)";
  PreparedStatement pstmt = conn.preparedCall(sql);
  pstmt.setString(1,user.getUsername());
  pstmt.setString(2,user.getPassword());
  pstmt.setString(3,user.getNickname());
  pstmt.setStirng(4,user.getEmail());
  pstmt.setString(5,user.getCode());
  pstmt.executeUpdate();
 }

 //激活
 public void activeByCode(String code){

  String sql = "update user set state=1,code=null where code=?";
  PreparedStatement pstmt = conn.preparedCall(sql);
  pstmt.setString(1,code);
  pstmt.executeUpdate();
 }

 //关闭数据库连接
 public void closeConn(){
  if(conn != null){
   conn.close();
  }
 }
}

//一个工具类,用于获取随机code注册激活码
public class UUIDUtils{
 public static String getUUID(){
  return UUID.randomUUID().toString().replace("-","")+UUID.randomUUID().toString().replace("-","");
 }
}

//index.jsp前端页面实现
<form action="<%=request.getContextPath()%>/regist.do" method="post">
 <tr>
  <td><label for="username">账号</label></td>
  <td><input type="text" name="username" /></td>
 </tr>
 <tr>
  <td><label for="password">密码</label></td>
  <td><input type="text" name="password" /></td>
 </tr>
 <tr>
  <td><label for="nickname">昵称</label></td>
  <td><input type="text" name="nickname" /></td>
 </tr>
 <tr>
  <td><label for="email">邮箱</label></td>
  <td><input type="text" name="email" /></td>
 </tr>
 <tr>
  <td><input type="submit" value="注册" /></td>
  <td><input type="reset" name="重写" /></td>
 </tr>
</form>

//发送邮件的Utils工具类
public class SendMailUitls{

 public static void sendMail(String to,String code){
  //session是mail包下的,因为是本地测试,所以第一个参数直接创建默认的即可
  Session session = Session.getInstance(new Properties(),new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication(){
     return new PasswordAuthentication("server@store.com", "111");
    }
   });

  //创建邮件对象
  Message message = new MimeMessage(session);
  //设置发件人,这里我创建了一个server@store.com用于发送邮件
  message.setFrom(new InternetAddress("server@store.com"));
  message.setRecipient(RecipientType.TO, new InternetAddress(to));
  message.setSubject("来自个博网的注册激活邮件");
  message.setContent("<a href='http://localhost:8080/RegistMailWeb/active.do'>点我激活</a>","text/html;charset=utf-8");

  //发送邮件
  Transport.send(message);
 }
}

//regist.doServlet实现
public class RegistServlet extends HttpServlet{
 public void init(){
  super.init();
 }

 public void service(HttpServletRequest request,HttpServletResponse response){
  //获取数据
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  String nickname = request.getParameter("nickname");
  String email = request.getParameter("email");

  //封装数据
  UserBean user = new UserBean();
  user.setUsername(username);
  user.setPassword(password);
  user.setNickname(nickname);
  user.setEmail(email);
  user.setCode(UUIDUtils.getUUID());

  //注册
  UserDao dao = new UserDao();
  dao.getConn();
  dao.regist(user);
  dao.closeConn();

  //发送邮件
  SendMailUtils.sendMail(email,user.getCode());
 }

 public void destroy(){
  super.desroy();
 }
} 

//创建active.do Servlet用于激活邮箱
public class ActiveServlet HttpServlet{
 public void init(){
  super.init();
 }

 public void service(HttpServletRequest request,HttpServletResponse response){

  //获取数据
  String code = request.getParameter("code");

  //数据库判断对应code是否存在,(这里就不进行判断了,直接进行比对)state=1&code=null代表激活
  UserDao dao = new UserDao();
  dao.activeByCode(code);

  //重定向success.jsp
  request.getRequestDispatcher("/WEB-INF/success.jsp").forward(request,response);
 }

 public void destroy(){
  super.destroy();
 }
}

编写成功页面

<html>
 <head>
  <title>成功激活</title>
 </head>
 <body>
  <script>
   window.onload = function(){
    alert("已成功激活");
   };
  </script>
 </body>
</html>

web.xml配置两个Servlet

<servlet>
 <servlet-name>RegistServlet</servlet-name>
 <servlet-class>com.servlet.RegistServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>RegistServlet</servlet-name>
 <url-pattern>/regist.do</url-pattern>
</servlet-mapping>

<servlet>
 <servlet-name>ActiveServlet</servlet-name>
 <servlet-class>com.servlet.ActiveServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>ActiveServlet</servlet-name>
<url-pattern>/active.do</url-pattern>

效果

打开tomcat服务器和foxmail邮件服务器,然后进入该web首页,点击注册,可以在foxmail中看到对应的email@store.com邮箱中有一封注册邮箱,点击该邮箱中的链接,就进入了激活页面,然后该注册的账号就激活注册成功了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java 注册时发送激活邮件和激活的实现示例

    Java 注册时发送激活邮件和激活的实现示例 最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 1.RegisterController.java package com.app.web.controller; import java.text.ParseException; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http

  • javamail实现注册激活邮件

    本文实例为大家分享了javamail注册激活邮件的具体代码,供大家参考,具体内容如下 需要的jar包 1.MySQL驱动包 2.mail.jar包 SMTP和POP3协议概述 SMTP协议称为简单邮件传输协议,是一组用于从原地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP的协议簇,SMTP是负责邮件服务器之间的寄信的通信协定 POP3协议称为邮局协议版本3,也是TCP/IP协议簇的一员,基于POP3协议的服务器是用来接收信件的.每个Email地址一般只有一个如

  • Springboot实现发送邮件及注册激活步骤

    在上一篇文章中,我们使用springboot整合邮件实现发送功能,那么下面来用邮件发送功能实现用户注册,方便我们进一步熟悉邮件发送功能的使用.实现步骤大致如下:进行用户注册同时发送一封激活邮件,邮件里面包含一条激活链接,点击链接把使用UUIDUtils生产发送给用户的邮箱验证码提交进行验证,从而修改用户的激活状态,最后返回登陆页面进行验证登录. 一.效果演示 输入邮箱等一系列信息,点击注册,系统自动发送激活邮件到你绑定的邮箱地址.同时数据库里面增加一条用户信息,其中用户状态(status)默认值

  • Navicat for MySQL 15注册激活详细教程

    1.下载Navicat for MySQL 15 https://www.navicat.com.cn/download/navicat-for-mysql 2.下载激活工具 链接: https://pan.baidu.com/s/1BtEADEk3_3oKc1ic7IHhiQ   提取码: haqj 3.安装Mavicat,按步骤安装即可,安装完毕后先不要打开软件,断开网络连接,将激活工具复制到Navicat安装路径下,以管理员身份运行. 在弹出界面选择Navicat 15 Products选

  • 利用JavaMail发送HTML模板邮件

    本文实例为大家分享了用JavaMail发送HTML模板邮件的具体代码,供大家参考,具体内容如下 依赖 <dependency>     <groupId>org.jsoup</groupId>     <artifactId>jsoup</artifactId>     <version>1.10.3</version> </dependency> <dependency>     <grou

  • JavaMail整合Spring实现邮件发送功能

    简介 javaMail与spring整合完成后,可大大加大邮件发送效率.当服务器一启动,配置文件就已加载.直接保存用户信息时,邮件可直接发送,大大提高了效率. 1.引入坐标 <!-- Javamail -->         <dependency>           <groupId>javax.mail</groupId>           <artifactId>mail</artifactId>           <

  • Spring Boot实现邮件注册功能示例代码

    注册流程 1.[前端] 用户在注册页面提交注册信息: 2.[后端] 校验用户提交的参数,有误直接返回错误信息,无误向下执行: 3.[后端] 随机生成一个ID,将ID作为key,用户信息作为value,存入redis,设置时长: 4.[后端] 生成激活链接,通过邮件系统发送邮件到用户邮箱 5.[前端] 用户点击上图的"确认注册": 6.[后端] 校验value是否过期,校验邮箱是否已经注册,没有则保存用户信息到数据库,提示用户已经注册成功: 功能实现(逆向分析) 1.先看看邮件发送的实现

  • PHP+jQuery 注册模块的改进(二):邮箱激活第1/2页

    接<PHP+jQuery 注册模块的改进之一>继续修改: ①在注册成功后返回登录邮件页面( maillogin.php ),在页面中用户可以点击链接跳转到自己注册邮箱的登录页面,可以再次发送激活链接: ②给激活链接设置有效期,过了有效期点击激活连接,会跳转页面让用户选择再次发送邮件或者返回注册页:再次发送邮件后,进邮箱点击链接激活: ③点击重新发送激活连接,不跳转页面,在当前页无刷新弹出通知:已重新发送链接,几秒钟之后通知消失: ④点击更换收件邮箱,跳转至注册页 1.点击邮箱链接跳转至相应邮箱

  • Node.js如何实现注册邮箱激活功能 (常见)

    一. 先注册一个支持发送验证邮件的邮箱,网易的126邮箱就可以 注册成功后进行登录,然后点击导航栏的设置,选择POP3/SMTP/IMAP,开启POP3/SMTP/IMAP服务,设置授权码就可以了. 二. 下载nodemailer插件 在命令行输入:npm install --save nodemailer 三. 编写发送邮件代码: 1 . 对发送激活邮件代码进行封装,然后导出: //email.js // 引入 nodemailer var nodemailer = require('node

  • Java注册邮箱激活验证实现代码

    最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java 复制代码 代码如下: package com.app.service.impl; import java.text.ParseException;import java.util.Date; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stere

随机推荐