Springboot集成mail邮箱实现邮件功能

提示:文章如有错误的地方请指出,以免误人子弟!

提示:以下是本篇文章正文内容,下面案例可供参考

邮箱设置

  1. 打开账号POP3/SMTP服务 注意保存授权码
  2. 添加依赖,为了让验证码页面好看点,咱们可以使用thymeleaf
<!-- 邮件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- thymeleaf -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  1. yaml 配置
  1. 封装工具类
/**
     * description: 使用thymeleaf模板发送邮件
     *
     * @param subject 主题
     * @param map Thymeleaf html模板参数
     * @param htmlName 模板名称
     * @param addressee 收件人
     * @return boolean
     * @author Tigger
     */
    public boolean sendThymeleafMail(String subject, Map<String, Object> map, String htmlName, String... addressee) {
          
   
        boolean flag = false;
        try {
          
   
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = null;
            mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            // 邮件发送者
            mimeMessageHelper.setFrom(from);
            // 邮件接受者
            mimeMessageHelper.setTo(addressee);
            // 主题
            mimeMessageHelper.setSubject(subject);

            // 这里引入的是Template的Context
            Context context = new Context();
            // 设置模板中的变量
            context.setVariables(map);
            // 第一个参数为模板的名称
            String process = templateEngine.process(htmlName, context);
            // 第二个参数true表示这是一个html文本
            mimeMessageHelper.setText(process,true);
            javaMailSender.send(mimeMessage);
            flag = true;
        }
        catch (MessagingException e) {
          
   
            e.printStackTrace();
        }
        return flag;
    }
  1. 使用,这边使用了lombok和redis,需要的自己引下依赖,不需要的自行删除。
/**
  * description: 生成指定位数短信验证码
  *
  * @param count 指定位数
  * @return java.lang.String
  * @author Tigger
  */
 private String getRandCode(int count) {
          
   
     return String.valueOf((int)((Math.random()*9+1)* Math.pow(10,count-1)));
 }

/**
   * description: 发送邮箱验证码
   *
   * @param mailNumber 发送邮箱账号
   * @return java.lang.String
   * @author Tigger
   */
  public String sendCodeMailInfo(String mailNumber) {
          
   
      String sendMessage = null;
      String randCode = getRandCode(6);
      log.info("邮箱验证码-{}", randCode);
      Map<String, Object> stringObjectMap = new HashMap<>(1);
      stringObjectMap.put("codeMessage", randCode);
      boolean mail = mailUtil.sendThymeleafMail("验证码", stringObjectMap, "mailAssign.html", mailNumber);
      if (mail) {
          
   
          log.info("邮箱验证码发送成功");
          // 将验证码放入redis
          boolean set = redisUtil.set(mailNumber + FinalCode.REDIS_Mail_SMS, randCode, FinalCode.SECOND_NUMBER);
          if (set) {
          
   
              log.info("短信验证码缓存成功");
          }
          sendMessage = "邮箱验证码发送成功";
      }
      return sendMessage;
  }
  1. html文件
  1. 使用效果

希望对你有所帮助!

经验分享 程序员 微信小程序 职场和发展