java实战案例之用户注册并发送邮件激活/发送邮件验证码

目录

  • 一、前期准备
    • 1、准备两个邮箱账号(一个发邮件,一个收邮件)
      • 1.1)登录需要发送邮件的QQ邮箱,找到设置项
      • 1.2)然后在账户栏下,找到(POP3/SMTP)服务协议
      • 1.3)生成授权码
  • 二、项目
    • 1、准备用户数据表
      • 2、idea 创建项目
        • 2.1)在项目的pom表中导入邮件jar包
        • 2.2)创建user类—用户类
        • 2.3)创建配置文件
        • 2.4)创建EmailController类
        • 2.5)创建EmailService 类
        • 2.6)创建EmailServiceImpl 类
      • 3、准备网页
        • 4、测试
        • 总结

          一、前期准备
          1、准备两个邮箱账号(一个发邮件,一个收邮件)

          1.1)登录需要发送邮件的QQ邮箱,找到设置项
          1.2)然后在账户栏下,找到(POP3/SMTP)服务协议 java实战案例之用户注册并发送邮件激活/发送邮件验证码
          文章图片


          1.3)生成授权码 下拉找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 打开 POP3/SMTP服务,并记住授权码,后面发送邮件时会用到授权码
          java实战案例之用户注册并发送邮件激活/发送邮件验证码
          文章图片


          二、项目
          1、准备用户数据表
          CREATE TABLE `user` (`userid` int(20) NOT NULL AUTO_INCREMENT COMMENT '用户编号',`name` varchar(16) DEFAULT NULL COMMENT '姓名',`password` varchar(16) DEFAULT '' COMMENT '密码',`sex` varchar(12) DEFAULT NULL COMMENT '性别',`idno` varchar(18) DEFAULT NULL COMMENT '身份证号码',`tel` int(11) DEFAULT NULL COMMENT '手机号码',`userVerificationCode` int(6) DEFAULT NULL COMMENT '验证码',`userActivationCode` varchar(255) DEFAULT NULL COMMENT '激活码',`eml` varchar(255) DEFAULT '' COMMENT '邮箱',`vipid` int(1) DEFAULT 0 COMMENT '会员等级',`permissionid` int(1) DEFAULT 0 COMMENT '权限等级',`registerdata` datetime DEFAULT NULL COMMENT '注册日期',`status` tinyint(1) DEFAULT NULL COMMENT '状态:0 未激活 1激活',PRIMARY KEY (`userid`) ) ENGINE=InnoDB AUTO_INCREMENT=1007 DEFAULT CHARSET=utf8

          java实战案例之用户注册并发送邮件激活/发送邮件验证码
          文章图片


          2、idea 创建项目

          2.1)在项目的pom表中导入邮件jar包
          org.springframework.bootspring-boot-starter-mail

          为了使项目能够跑通测试,以下是pom表的所有配置
          4.0.0 org.springframework.bootspring-boot-starter-parent2.5.3 com.demo yuyue 0.0.1-SNAPSHOT yuyue Demo project for Spring Boot 1.8true org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-devtoolstrueorg.projectlomboklombokmysqlmysql-connector-javaruntimeorg.springframework.bootspring-boot-starter-jdbccom.baomidoumybatis-plus-boot-starter3.4.3org.springframework.bootspring-boot-starter-mail org.springframework.bootspring-boot-maven-plugintrue


          2.2)创建user类—用户类
          package com.demo.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.sql.Timestamp; @Data//lombok---自动创建get、set等方法@NoArgsConstructor//lombok---无参构造@AllArgsConstructor//lombok---全参构造@Accessors(chain = true)//开启链式编程@TableName("user")//关联数据表--user表的名字public class User { //主键自增 @TableId(type= IdType.AUTO) private Integer userid; //登录账号 private String name; //姓名 private String password; //密码 private String repassword; //确认密码 private String sex; //性别 private String idno; //身份证号码 private Integer userVerificationCode; //验证码 private Integer userActivationCode; //激活码 private String eml; //邮箱 private String tel; //联系电话 private Integer vipid; //vip标志id private Integer permissionid; //权限标志id private boolean status; //状态:0 未激活 1激活 //日期出参格式化 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Timestamp registerdata; //注册时间 @TableField(exist = false)//不是数据表格中固有的属性 private String vipname; //vip标志名称 @TableField(exist = false)//不是数据表格中固有的属性 private String permissionname; //权限标志名称}


          2.3)创建配置文件
          server:port: 8090spring:#连接数据数据库datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/yuyue?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=trueusername: rootpassword: root#如果数据库密码以数字0开头 则必须使用""号包裹#password: "01234"#连接发送者邮箱mail:host: smtp.qq.com #这个是QQ邮箱的,发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com,可以百度username: Xxx@qq.com #qq邮箱 password:#qq邮箱授权码protocol: smtp #发送邮件协议properties.mail.smtp.auth: true#设置是否需要认证,如果为true,那么用户名和密码就必须的,properties.mail.smtp.starttls.enable: trueproperties.mail.smtp.starttls.required: trueproperties.mail.smtp.ssl.enable: true #开启SSLdefault-encoding: utf-8#SpringBoot整合MP配置mybatis-plus:#定义别名包: 实现对象映射type-aliases-package: com.demo.pojo#加载映射文件一个接口对应一个映射文件mapper-locations: classpath:/mybatis/*.xml#开启驼峰映射configuration:map-underscore-to-camel-case: true#不打印日志debug: false#Mapper接口执行 打印Sql日志logging:level:com.jt.mapper: debug

          2.3.1)邮件的配置文件,application.yml写法
          spring:mail:host: smtp.qq.com #发送邮件服务器username: xx@qq.com #发送者邮箱password: xxxxxxxx #发送者邮箱授权码protocol: smtp #发送邮件协议properties.mail.smtp.auth: true #开启认证properties.mail.smtp.port: 994 #设置端口465或者994properties.mail.display.sendmail: aaa #可以任意properties.mail.display.sendname: bbb #可以任意properties.mail.smtp.starttls.enable: trueproperties.mail.smtp.starttls.required: trueproperties.mail.smtp.ssl.enable: true #开启SSLdefault-encoding: utf-8#from: xx@qq.com#发送者邮箱

          2.3.2)邮件的配置文件,application.properties写法
          spring.mail.host=smtp.qq.com//这个是QQ邮箱的其他邮箱请另行百度spring.mail.username=用户名//发送方的邮箱spring.mail.password=密码//对于qq邮箱而言 密码指的就是发送方的授权码spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=true


          2.4)创建EmailController类
          package com.demo.controller; import com.demo.pojo.User; import com.demo.service.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController//接受请求@CrossOrigin //解决跨域@RequestMapping("/email") //访问路径public class EmailController{//注入对象@Autowiredprivate EmailService emailService; @PostMapping ("/sendEmail")public String sendEmail(User user){System.out.println("发送邮件。。。。"); return emailService.sendEmail(user); }@PostMapping ("/verificationEmail")public String verificationEmail(User user){System.out.println("验证-邮箱发送的验证码。。。。"); return emailService.verificationEmail(user); }}


          2.5)创建EmailService 类
          package com.demo.service; import com.demo.pojo.User; public interface EmailService {//发送验证码String sendEmail(User user); }


          2.6)创建EmailServiceImpl 类
          package com.demo.service; import com.demo.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; import java.util.Random; @Servicepublic class EmailServiceImpl implements EmailService {//定义验证码privateInteger userVerificationCode = null; @AutowiredJavaMailSender jms; //读取配置文件邮箱账号参数@Value("${spring.mail.username}")private String sender; //发送验证码@Overridepublic String sendEmail(User user) {//随机数用作验证Integer userVerificationCode = new Random().nextInt(999999); try {//建立邮件消息SimpleMailMessage mainMessage = new SimpleMailMessage(); //发送者mainMessage.setFrom(sender); //接收者mainMessage.setTo(user.getEml()); //发送的标题mainMessage.setSubject("邮箱验证"); //发送的内容String msg = "您好!" + user.getEml() + ",您正在使用邮箱验证,验证码:" + userVerificationCode + "。"; mainMessage.setText(msg); //发送邮件jms.send(mainMessage); //下面是加入缓存,以便于进行邮箱验证this.userVerificationCode = userVerificationCode; } catch (Exception e) {return ("发送邮件失败,请核对邮箱账号"); }return "验证码已经发送您的邮箱,请前去邮箱查看,验证码是:" + userVerificationCode ; }@Overridepublic String verificationEmail(User user) {if (this.userVerificationCode.equals(user.getUserVerificationCode())){return "验证成功"; }return "验证失败"; }}


          3、准备网页
          邮箱验证测试 - 锐客网 邮箱验证测试
          电子邮箱:
          邮箱验证码:


          4、测试
          后端代码,写的比较简单,仅仅测试邮箱是否能够发送验证码
          java实战案例之用户注册并发送邮件激活/发送邮件验证码
          文章图片

          java实战案例之用户注册并发送邮件激活/发送邮件验证码
          文章图片

          java实战案例之用户注册并发送邮件激活/发送邮件验证码
          文章图片


          总结 【java实战案例之用户注册并发送邮件激活/发送邮件验证码】到此这篇关于java用户注册并发送邮件激活/发送邮件验证码的文章就介绍到这了,更多相关java用户注册发送邮件激活内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

            推荐阅读