Springboot集成mail邮箱实现邮件功能
提示:文章如有错误的地方请指出,以免误人子弟!
提示:以下是本篇文章正文内容,下面案例可供参考
邮箱设置
- 打开账号POP3/SMTP服务 注意保存授权码
- 添加依赖,为了让验证码页面好看点,咱们可以使用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>
- yaml 配置
- 封装工具类
/**
* 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;
}
- 使用,这边使用了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;
}
- html文件
- 使用效果
希望对你有所帮助!
