准备:发送者需要开启POP3、SMTP协议
需要授权码:
(1)添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
(2)在application.yml 配置
spring:
mail:
default-encoding: utf-8 #默认编码
host: smtp.qq.com #配置SMTP 服务器地址
username: 3121624188@qq.com #发送者邮箱
password: yuoijqymwhvxddcj #申请到的授权码
port: 587 #端口号587或 465
properties: #配置SSL 加密工厂
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
debug: true #表示开启debug模式,这样,邮件发送的过程会在控制台打印出来,这样方便排查错误
#配置这些好后,springboot会自动帮我们配置好相关的邮件发送类
(3)发送文本普通邮件
// 发送普通邮件:发送一段文本文件
@SpringBootTest
class DemoApplicationTests {
@Autowired
public JavaMailSender javaMailSender;
@Test
void contextLoads() {
SimpleMailMessage message=new SimpleMailMessage();//构建一个邮件对象
message.setSubject("使用springboot发送邮件测试");//设置邮件主题
message.setFrom("3121624188@qq.com");//设置邮件发送人,要与application.yml文件配置一致
message.setTo("2295989051@qq.com");//设置收件人,如果有多个接收人,使用","隔开
//message.setCc("3121624188@qq.com");//设置抄送人,可以有多个
//message.setBcc("3121624188@qq.com");//设置隐秘抄送人,可以有多个
message.setSentDate(new Date());//设置发送日期
message.setText("小程使用springboot发送邮件的简单测试!!");//设置邮件正文
javaMailSender.send(message);//发送邮件
}
(4)发送带附件的邮件
// 发送带附件的邮件
@Test
void sendAttachFileMail() throws MessagingException {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);//true表示构建一个带附件的邮件对象
helper.setSubject("这是一封测试邮件");
helper.setFrom("3121624188@qq.com");
helper.setTo(new String[]{"3121624188@qq.com"});
helper.setSentDate(new Date());
helper.setText("小程使用springboot发送可以带附件的邮件 测试!!");
helper.addAttachment("james.jpg",new File("F:\\詹姆斯.jpg"));//第一个参数是自定义的名称,第二个参数是文件的位置
javaMailSender.send(mimeMessage);
}
(5)正文带图片
// 正文带图片
@Test
public void sendImageMail() throws MessagingException {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setSubject("这是一封测试邮件");
helper.setFrom("3121624188@qq.com");
helper.setTo("3121624188@qq.com");
helper.setSentDate(new Date());
helper.setText(
"<p>大家好,这是一封测试邮件,这封邮件包含两张图片,分别如下</p>" +
"<p>第一张图片:</p><img src='cid:p01' /><p>这是第二张图片</p>"
+"<img src='cid:p02'>",true);
helper.addInline("p01",new FileSystemResource((new File("F:\\Saved Pictures\\大白2.jpg"))));
helper.addInline("p02",new FileSystemResource(new File("F:\\詹姆斯.jpg")));
javaMailSender.send(mimeMessage);
}
(6)使用Thymeleaf作为邮件的模板
<!--引用thymeleaf作为邮件模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
email.html文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>使用Thymeleaf作为邮件的模板</title>
</head>
<body>
<p>hello 欢迎加入 xxx 大家庭,您的入职信息如下:</p>
<table border="1">
<tr>
<td>姓名</td>
<td th:text="${username}"></td>
</tr>
<tr>
<td>职位</td>
<td th:text="${position}"></td>
</tr>
<tr>
<td>薪水</td>
<td th:text="${salary}"></td>
</tr>
</table>
<div style="color: #ff1a0e">一起努力创造辉煌</div>
</body>
</html>
测试类
@SpringBootTest
public class ThymeleafEmail {
@Autowired
public TemplateEngine templateEngine;
@Autowired
private JavaMailSender javaMailSender;
@Test
public void sendThymeleaf() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("使用Thymeleaf模板作为发送邮件的模板");
helper.setFrom("3121624188@qq.com");
helper.setTo("3121624188@qq.com");
helper.setSentDate(new Date());
//这里进入的是Template的Context
Context context = new Context();
//设置模板中的变量
context.setVariable("username","程婷");
context.setVariable("position","java开发工程师");
context.setVariable("salary","XXXXXK");
//第一个参数作为模板的,名称
String process = templateEngine.process("email.html", context);
//第二个参数true表示这是html文本
helper.setText(process,true);
javaMailSender.send(mimeMessage);
}
}