生成授权码
spring-boot-starter-mail 是 Spring Boot 的一个 Starter,它提供了集成 JavaMail Sender 和对应配置的自动配置。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
#这里配置的是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
@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());
}
<!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>
@Autowired
private TemplateEngine templateEngine;#注入模版引擎
@Autowired
EmailMessageUtil emailMessageUtil;#注入工具类
//向用户邮箱发送邮件,激活账户
Context context=new Context();
context.setVariable("email", user.getEmail());
//http://localhost:9000/active/code
String url="http://"+address+":"+port+"/activation/userId/code";
context.setVariable("url", url);
//使用模板引擎生成内容
String content = templateEngine.process("/mail/activation", context);
emailMessageUtil.sendMineEmail(user.getEmail(), "激活账户",content);