1. 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2. 配置
配置邮件也是很简单的,可以yml文件中配置,要注意的是password填的不是邮箱密码,而是授权码。
qq邮箱获取授权码的方法,可以进入QQ邮箱首页->设置->帐户,开启SMTP服务,并生成授权码
spring:
mail:
# 配置 SMTP 服务器地址
host: smtp.qq.com
# 发送者邮箱
username: 810725633@qq.com
# 邮箱授权码
password:
# 端口号465或587
port: 587
# 默认的邮件编码为UTF-8
default-encoding: UTF-8
# 配置SSL 加密工厂
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
3. 使用
Springboot融合了mail功能,导入依赖后就可以直接使用。
发送简单邮件(不带附件,不带格式):
@RunWith(SpringRunner.class)
@SpringBootTest(classes = BrokerApplication.class)
@TestPropertySource(properties = {"classpath:application.yml"})
public class FetchMailTest {
@Resource
JavaMailSender javaMailSender;
@Test
public void contextLoads() throws Exception {
SimpleMailMessage message=new SimpleMailMessage();
Map<String, String> testMap = new HashMap<>();
testMap.put("poloniex", "12");
testMap.put("binance", "11");
message.setText(JacksonUtils.serialize(testMap));
message.setSubject("Exchange Score");
message.setTo("bert.li@poloniex.com");
// 一定要加这一行 否则报 501 错误
message.setFrom(String.valueOf(new InternetAddress("810725633@qq.com")));
// message.setCc("抄送人");
// message.setBcc("密送人");
javaMailSender.send(message);
}
}
发送带Html格式的附件:
@SpringBootTest
class SpringbootApplicationTests {
@Autowired
JavaMailSender javaMailSender;
@Test
void contextLoads() throws Exception {
MimeMessage mailMessage=javaMailSender.createMimeMessage();
//需要借助Helper类
MimeMessageHelper helper=new MimeMessageHelper(mailMessage);
String context="<b>尊敬的用户:</b><br> 您好,管理员已为你申请了新的账号,"+
"请您尽快通过<a href=\"http://www.liwz.top/\">链接</a>登录系统。"
+"<br>修改密码并完善你的个人信息。<br><br><br><b>员工管理系统<br>Li,Wan Zhi</b>";
try {
helper.setFrom("发送人");
helper.setTo("收件人");
helper.setBcc("密送人");
helper.setSubject("主题");
helper.setSentDate(new Date());//发送时间
helper.setText(context,true);
//第一个参数要发送的内容,第二个参数是不是Html格式。
javaMailSender.send(mailMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
发送带附件的邮件:
@SpringBootTest
class SpringbootApplicationTests {
@Autowired
JavaMailSender javaMailSender;
@Test
void contextLoads() throws Exception {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
// true表示构建一个可以带附件的邮件对象
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setSubject("这是一封测试邮件");
helper.setFrom("97******9@qq.com");
helper.setTo("10*****16@qq.com");
//helper.setCc("37xxxxx37@qq.com");
//helper.setBcc("14xxxxx098@qq.com");
helper.setSentDate(new Date());
helper.setText("这是测试邮件的正文");
// 第一个参数是自定义的名称,后缀需要加上,第二个参数是文件的位置
helper.addAttachment("资料.xlsx",new File("/Users/gamedev/Desktop/测试数据 2.xlsx"));
javaMailSender.send(mimeMessage);
}
}