SpringBoot整合邮件发送,以网易(163邮箱)为例

点击设置,点击二级菜单中的 POP3/SMTP/IMAP 进入页面,按上述步骤获取授权码。

1.引入maven依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
spring:
  mail:
    host: ${spring.email.host} //SMTP服务器地址smtp.163.com
    password: ${spring.email.password} //SMTP服务器授权码
    username: ${spring.email.username} //发送邮件的邮箱号码
@Override
public Result sendEmail(String email) throws MessagingException {
    if(RegexUtils.isEmailValid(email)) {
        return Result.error("邮箱格式错误!");
    }

    String code = RandomUtil.randomNumbers(6);
    redisTemplate.opsForValue().set("email:code:" + email, code, 5L, TimeUnit.MINUTES);

    // 创建Thymeleaf上下文
    Context thymeleafContext = new Context();
    thymeleafContext.setVariable("verificationCode", code);
    String htmlContent = templateEngine.process("emailTemplate", thymeleafContext);

    MimeMessage message=javaMailSender.createMimeMessage();
    MimeMessageHelper messageHelper=new MimeMessageHelper(message,true,"utf-8");
    messageHelper.setFrom(emailProperties.getUsername());
    messageHelper.setTo(email);
    messageHelper.setSubject("Mortal邮箱验证码");
    messageHelper.setText(htmlContent, true);
    javaMailSender.send(message);
    return Result.success(code);
}

通过Thymeleaf渲染HTML模板,去动态处理verificationCode

<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
    <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 16px; color: #4a4a4a; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
        请填写以下验证码完成邮箱验证 (5分钟内有效)
    </td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
    <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 36px; font-weight: bold; text-align: center; color: #4a4a4a; vertical-align: top; line-height: 1.6em; margin: 0; padding: 0 0 20px;" valign="top">
        <span th:text="${verificationCode}"></span>
    </td>
</tr>

调用后实现效果