springboot+jodd实现发送邮箱验证码模板

1、开启QQ邮箱smtp服务

springboot+jodd实现发送邮箱验证码模板_第1张图片

2、导入jodd-email包

<dependency>
      <groupId>org.jodd</groupId>
      <artifactId>jodd-mail</artifactId>
      <version>5.1.0-20190624</version>
</dependency>
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

3、写发送邮件配置类

@Configuration
public class EmailConfig  {

    //发件人邮箱
    private String EMAIL_ACCOUNT="[email protected]";
   //发件人邮箱密码
    private String EMAIL_AUTH="123456";
   //qq邮箱smtp
    private String EMAIL_SMTP_SERVER="smtp.exmail.qq.com";
    //qq邮箱端口
    private int EMAIL_SMTP_PORT;
    
    
    @Bean
    public SmtpServer getSmtpServer(){
        
        SmtpServer smtpServer = MailServer.create()
                .host(EMAIL_SMTP_SERVER)
                .port(EMAIL_SMTP_PORT)
                .auth(EMAIL_ACCOUNT, EMAIL_AUTH)
                .timeout(2500)
                .ssl(true)
                .buildSmtpMailServer();
        return smtpServer;
    }
}

4、发送邮件工具类

@Component
public class MailSender {

    @Autowired
    private SmtpServer smtpServer;
    
    /**
     * @param mailTemplate 邮件模板
     * @param data         模板数据
     * @param sendTo       发送给
     * @param title        主题
     */
    public void sendMail(String mailTemplate, Map<String, Object> data,, String sendTo, String title) { 
        CompletableFuture.runAsync(() -> {
        
            if (StringUtils.isNotBlank(sendTo)) {
                Email email = Email.create()
                        .to(sendTo)
                        .from("xxx公司",123@qq.com“)
                        .subject(title)
                        .htmlMessage(content);
               
                SendMailSession sendMailSession = smtpServer.createSession();
                sendMailSession.open();
                sendMailSession.sendMail(email);
                sendMailSession.close();
            }
        });
    }

}

5、编写serviceImpl实现类

@Service
public class EmailServiceImpl implements EmailCodeService {

    @Autowired
    private MailSender mailSender;

    @Override
    public void sendEmailCode(String email, HttpServletRequest request) {

        if (StringUtils.isBlank(email)) {
        String emailCode = String.valueOf(new Random().nextInt(899999) + 100000);
        request.getSession().setAttribute("emailCode", emailCode);

        Map<String, Object> data = Maps.newHashMap();
        data.put("emailCode", emailCode);
        mailSender.sendMail("emailCode.html", data, email, "验证码");

    }
}

6、模板邮件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <p style="text-align: left;font-weight: bold">尊敬的用户:</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;您好!您正在进行邮箱验证,本次请求的验证码为:</p>
    <p style="font-size: 50px;font-weight: 900;text-align: center">${emailCode}</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;本次验证码有效期为5分钟。</p>
</div>
</body>
</html>

7、编写controller层

public class EmailController {

    @Autowired
    private EmailService emailService;

    @PostMapping(value = "/getEmailCode")
    public String getEmailCode(String email) {
            //发送邮件emailCode
            emailCodeService.sendEmailCode(email, request());
            return "发送成功!";
        });
    }
}

8、结果显示

springboot+jodd实现发送邮箱验证码模板_第2张图片
完结撒花~

你可能感兴趣的:(后端springboot)