共计 2430 个字符,预计需要花费 7 分钟才能阅读完成。
1. 发送邮件之前的筹备
申请一个邮箱账号,我这里应用的是网易邮箱
批改网易邮箱的设置 进去之后默认是敞开的须要开启他
POP3/SMTP 服务
开启的时候有一个受权码,记录好他,上面要用到
有的邮箱设置可能须要保留,记得保留批改
2. 代码的编写
在 pom.xml 中引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
编写 application.yml 文件
spring:
mail:
host: smtp.163.com # 你应用的邮箱的域名
port: 465 # 邮箱的端口个别都是 465 不晓得能够查一下
username: XXXX@163.com # 你的邮箱账号
password: XXXXX # 下面开启的时候保留的受权码
protocol: smtp # 发送邮件的协定
properties.mail.smtp.ssl.enable: true #开启 SSL 平安连贯
发送邮件的客户端类
@Component // 这个类会别 spring 托管,在这个我的项目中所有中央都能够应用,只须要注入一下即可
public class MailClient {private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
/**
* 发送邮件的外围组件
*/
@Autowired
private JavaMailSender mailSender;
/**
* 邮件发件人
*/
@Value("${spring.mail.username}") // 这里是从 application.yml 中获得值 springboot 中能够应用 @Value 来获取到 yml 文件中的值 spring.mail.username 就是他的 key
private String from;
/** 发送邮件的办法
* @param to 发送给谁
* @param subject 邮件主题
* @param content 邮件内容
*/
public void sendMail(String to,String subject,String content){
try {
// 创立一个发送邮件的类
MimeMessage message = mailSender.createMimeMessage();
// 应用发送邮件的帮忙类
MimeMessageHelper helper = new MimeMessageHelper(message);
// 发送人
helper.setFrom(from);
// 接管人
helper.setTo(to);
// 发送的主题
helper.setSubject(subject);
// 以 html 的模式的邮件内容
helper.setText(content,true);
// 发送邮件
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {logger.error("发送邮件失败"+e.getMessage());
}
}
}
好了当初发送邮件的性能曾经写完了,当初测试一下吧
3. 测试邮件发送性能
新建一个测试类
@Autowired
private MailClient mailClient; // 将方才写好的邮件发送的客户端注入进来
@Test // 测试发送一个一般文本的邮件
public void sendMailText(){mailClient.sendMail("你要发送邮件的邮箱","测试","我在测试啊");
}
是不是很神奇,收到了邮件了,那么接下来咱们来试试发送一个 html 的邮件看看
在 templates 新建一个 mail 文件夹, 建一个名为 demo.html 的文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title> 邮件发送例子 </title>
</head>
<body>
<p> 欢送 <span style="color: red" th:text="${username}"></span> 应用我的邮箱!</p>
</body>
</html>
回到咱们的测试类
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@Autowired
private MailClient mailClient;
// 模板引擎 这是 springboot 曾经将 thymeleaf 封装成了一个对象,能够间接应用他 ```
@Autowired
private TemplateEngine templateEngine;
@Test
public void sendHTMLMail(){Context context = new Context(); // 在这里咱们是将 html 要获取的 username 传进去
context.setVariable("username","小王");
String content = templateEngine.process("/mail/demo", context);// 指定他的 html 门路,并且将咱们设置的一个信息给他
System.out.println(content); // 在控制台打印一下看看
mailClient.sendMail("你要发送的邮箱","HTML 发送",content); // 执行发送邮件的办法
}
在这里肯定要留神不要导错包了,咱们用的是 thymeleaf
的,所以要到 thymeleaf
的包
在检查一下有没有收到邮件
收到邮件了
好了,当初 spring boot 发送邮件性能曾经实现了,快去发邮件把!
正文完