第一步:新建项目
项目结构:
第二步:申请邮箱的授权码
第三步:完成配置文件和maven依赖
properties.yml
server:
port: 8089
spring:
mail:
#qq和163都可以
host: smtp.qq.com
protocol: smtp
default-encoding: UTF-8
password: 你的授权码
username: 你的邮箱
port: 465
properties.mail.smtp.ssl.enable: true
servlet:
multipart:
max-file-size: 10MB
max-request-size: 50MB
pom.xml
<!--javaweb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--模版引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
第四步:完成controller
具体步骤和每一步都是什么意思,代码注释的很清楚,我相信小学生也可以看懂
MailController.java
package com.example.mail.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
/**
* 发送邮件的几种情况
* 1:直接文本发送、
* 2:内容是html格式
* 3:带有附件的形式
*/
@RestController
public class MailController {
//java邮件服务接口:全局的老大哥
@Autowired
private JavaMailSender javaMailSender;
// 发送html格式邮件时需要用到模板渲染引擎
@Autowired
private TemplateEngine templateEngine;
/**
* 普通邮件发送
* @return
*/
@RequestMapping("/send")
public String send(){
//创建一个简单的邮件
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 给邮件实体添加一些信息(谁发的?发给谁?内容是什么?)
// 谁发的?
mailMessage.setFrom("wuchu990723@qq.com");
// 发给谁?setTo里面可以写多个用户
// mailMessage.setTo("wuchu990723@163.com","wuchu990724@163.com");
mailMessage.setTo("wuchu990723@163.com");
// 发送时间
mailMessage.setSentDate(new Date());
// 邮件主题
mailMessage.setSubject("测试邮件");
// 邮件内容
mailMessage.setText("欢迎加入字节跳动大家庭!!");
// 发送邮件
javaMailSender.send(mailMessage);
return "邮件发送成功!";
}
/**
* 使用html发送
* @return
*/
@RequestMapping("/sendHtml")
public String sendHtml() throws MessagingException {
//此时的邮件类型就不是普通的SimpleMailMessage
//需要使用老大哥javaMailSender去创建
//MimeMessage是互联网类型的邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//因为不是普通邮件,所以需要一个helper去帮助它添加内容
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
//同样的道理可以给邮件添加内容
// 谁发的
mimeMessageHelper.setFrom("wuchu990723@qq.com");
// 发给谁?setTo里面可以写多个用户
// mailMessage.setTo("wuchu990723@163.com","wuchu990724@163.com");
mimeMessageHelper.setTo("wuchu990723@163.com");
// 邮件主题
mimeMessageHelper.setSubject("测试邮件");
// 发送时间
mimeMessageHelper.setSentDate(new Date());
// 邮件内容
//这里mimeMessageHelper的setText方法可以传两个参数:内容和是否是html类型
// mimeMessageHelper.setText(content,true);
//而上面简单邮件SimpleMailMessage只能有一个参数
// mailMessage.setText(content);
/*
* 这里注意:我们如果需要往main.html文件中传值:就需要使用thymeleaf中的Context方法
* 往mail.html中赋值
* 例如:本项目中的mail.html文件中需要name和result两个参数值
* 就要使用context.setVariable()
*/
//赋值
Context context = new Context();
// 姓名
context.setVariable("name","发光的白鹤芋");
// 结果
context.setVariable("result","拟录取");
// 使用模板引擎处理html文件得到字符串类型的content
String content = templateEngine.process("mail",context);
// 记得开启html为true
mimeMessageHelper.setText(content,true);
// 最后需要老大哥来发送
javaMailSender.send(mimeMessage);
return "使用html的邮件发送成功!!";
}
/**
* 使用html发送,并带有附件
* @return
*/
@RequestMapping("/sendHtmlAndAttachment")
public String sendHtmlAndAttachment() throws MessagingException {
//此时的邮件类型就不是普通的SimpleMailMessage
//需要使用老大哥javaMailSender去创建
//MimeMessage是互联网类型的邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//因为不是普通邮件,所以需要一个helper去帮助它添加内容
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
//同样的道理可以给邮件添加内容
// 谁发的
mimeMessageHelper.setFrom("wuchu990723@qq.com");
// 发给谁
mimeMessageHelper.setTo("wuchu990723@163.com");
// 邮件主题
mimeMessageHelper.setSubject("测试邮件");
// 发送时间
mimeMessageHelper.setSentDate(new Date());
// 邮件内容
//这里mimeMessageHelper的setText方法可以传两个参数:内容和是否是html类型
// mimeMessageHelper.setText(content,true);
//而上面简单邮件SimpleMailMessage只能有一个参数
// mailMessage.setText(content);
/*
* 这里注意:我们如果需要往main.html文件中传值:就需要使用thymeleaf中的Context方法
* 往mail.html中赋值
* 例如:本项目中的mail.html文件中需要name和result两个参数值
* 就要使用context.setVariable()
*/
//赋值
Context context = new Context();
// 姓名
context.setVariable("name","发光的白鹤芋");
// 结果
context.setVariable("result","拟录取");
// 使用模板引擎处理html文件得到字符串类型的content
String content = templateEngine.process("mail",context);
// 记得开启html为true
mimeMessageHelper.setText(content,true);
// 添加附件
// 使用addAttachment,并带有两个参数
// mimeMessageHelper.addAttachment(文件名,文件资源);
// 处理文件
FileSystemResource fileSystemResource = new FileSystemResource(new File("C:\\Users\\WuChu\\Desktop\\test.jpeg"));
String filename = fileSystemResource.getFilename();
// 得到两个参数之后, 添加文件(可以添加多个附件,调用几次addAttachment就行)
mimeMessageHelper.addAttachment(filename,fileSystemResource);
mimeMessageHelper.addAttachment(filename,fileSystemResource);
// 最后需要老大哥来发送
javaMailSender.send(mimeMessage);
return "使用html并带有附件的邮件发送成功!!";
}
}
第五步:结果展示
1、浏览器输入:http://localhost:8089/send>
2、浏览器输入:http://localhost:8089/sendHtml
3、浏览器输入:http://localhost:8089/sendHtmlAndAttachment