1、开启QQ邮箱smtp服务
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="123@qq.com";
//发件人邮箱密码
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> 您好!您正在进行邮箱验证,本次请求的验证码为:</p>
<p style="font-size: 50px;font-weight: 900;text-align: center">${emailCode}</p>
<p> 本次验证码有效期为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、结果显示
完结撒花~