1、开启邮箱的POP3/IMAP/SMTP服务,本地客户端可以收发短信
生成授权码
2、添加JavaMail Sender依赖
spring-boot-starter-mail 是 Spring Boot 的一个 Starter,它提供了集成 JavaMail Sender 和对应配置的自动配置。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3、application.properties配置
#这里配置的是qq邮箱
spring.mail.host=smtp.qq.com
spring.main.port=465
spring.mail.username=#授权码g,在QQ邮箱客户端生成 修改成自己的 设置-账户-开启服务-获取授权码
spring.mail.password=bhyaiszqhyrqchaj #换成你的授权码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
4、创建邮件工具类
@Autowired
private JavaMailSender mailSender;
//文本内容
public void sendEmail(String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom("your@qq.com");message.setTo(to);message.setSubject(subject);message.setText(text);mailSender.send(message);
}/**html内容* 使用mailSender.createMimeMessage()方法创建了一个MimeMessage对象。* 然后,通过创建MimeMessageHelper对象,并传入MimeMessage对象,可以使用MimeMessageHelper* 对象的方法来设置邮件的各种属性。* @param to 目标邮箱* @param subject 邮件名* @param text 正文* @throws MessagingException*/
public void sendMineEmail(String to, String subject, String text) throws MessagingException {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper message = new MimeMessageHelper(mimeMessage);message.setFrom("yoru@qq.com");message.setTo(to);message.setSubject(subject);message.setText(text,true);mailSender.send(message.getMimeMessage());}
5、使用thymeleaf模板引擎生成内容并填充到邮件中
5.1、模板文件
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="utf-8"><title>Echo - 激活账号</title>
</head>
<body><div><p><b th:text="${email}"></b>, 您好! 😃</p><p>您正在注册 Echo, 这是一封激活邮件, 请点击<a th:href="${url}">此链接</a>,激活您的 Echo 账号! 🎉</p></div>
</body>
</html>
5.2、service层注入模板引擎,工具类
@Autowired
private TemplateEngine templateEngine;#注入模版引擎
@Autowired
EmailMessageUtil emailMessageUtil;#注入工具类
5.3、准备数据模型,通常是 Context 对象,它用于向模板传递变量。
//向用户邮箱发送邮件,激活账户Context context=new Context();context.setVariable("email", user.getEmail());//http://localhost:9000/active/codeString url="http://"+address+":"+port+"/activation/userId/code";context.setVariable("url", url);//使用模板引擎生成内容String content = templateEngine.process("/mail/activation", context);emailMessageUtil.sendMineEmail(user.getEmail(), "激活账户",content);