org.springframework.boot spring-boot-starter-mail2.3.2.RELEASE
ps:
添加thymeleaf依赖:
二. 开启发送邮箱源的发送协议org.thymeleaf thymeleaf-spring5org.thymeleaf.extras thymeleaf-extras-java8time
以163邮箱为例(QQ邮箱也可以),开启IMAP/SMTP服务和POP3/SMTP服务
三.配置yml在配置文件中添加:
spring:
mail:
protocol: smtps
host: smtp.163.com
username: *****@163.com
password: ***********
port: 465
default-encoding: UTF-8
ps: username为发送邮箱者的邮箱名
password为开启IMAP/SMTP服务时的密码
四. 编写业务代码 1.controllerprivate MailService mailService;
@GetMapping("/sendEmail/{email}")
public void SendEmail(@PathVariable String email){
mailService.sendEmailCode(email);
}
2.Service
public interface MailService {
void sendEmailCode(String email);
}
3.ServiceImpl
@Service public class MailServiceImpl extends ServiceImplimplements MailService { @Value("${spring.mail.username}") private String mailUserName; @Resource private JavaMailSender javaMailSender; @Resource private TemplateEngine templateEngine; @Override public void sendEmailCode(String email) { // 创建邮件对象 MimeMessage mimeMailMessage=javaMailSender.createMimeMessage(); try { MimeMessageHelper message = new MimeMessageHelper(mimeMailMessage, true); // 设置邮件主题 message.setSubject("忘记密码"); // 随机生成5位数验证码 String code = RandomUtil.randomNumbers(5); // 设置邮箱接收者 message.setTo(email); // 设置邮件的发送者 message.setFrom(mailUserName); // 设置邮件发送时间 message.setSentDate(new Date()); // 创建上下文环境(thymeleaf模板) Context context= new Context(); context.setVariable("email",email); context.setVariable("code",code); // 邮件页面 String text =templateEngine.process("wj.html",context); message.setText(text,true); QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("email",email); PUser one=getOne(queryWrapper); // 将验证码保存到数据库中 one.setCode(code); update(one,queryWrapper); }catch (MessagingException e){ e.printStackTrace(); } javaMailSender.send(mimeMailMessage); } }
ps:导入的Context为:
import org.thymeleaf.context.Context;4.发送的邮箱页面样式(thymeleaf)
邮件 忘记密码 您的注册信息是:
| 邮箱 |
您的验证码为:
感谢您的访问,祝您说愉快!



