Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用。这个专栏将对Spring Boot框架从浅入深,从实战到进阶,不但我们要懂得如何去使用,还要去剖析框架源码,学习其优秀的设计思想。汇总目录链接:【Spring Boot实战与进阶】学习目录
一、简介
在我们的项目中,通常会用到发邮件的需求,比如说:系统异常的预警、用户注册的邮箱验证、异地登录的提醒等等。在Spring Boot中,发送邮件使用的是Spring提供的JavaMailSender,其提供了许多简单易用的方法,可发送简单的邮件、HTML格式的邮件、带附件的邮件,并且可以创建邮件模板。
二、集成邮件
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、配置文件
在application.yml中进行简单的配置,我使用的是QQ邮箱。
spring:
mail:
host: smtp.qq.com
username: 961241246@qq.com #邮箱
password: **************** #授权码
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
注意:这里的“password”不是QQ邮箱密码,它是授权码,这里需要开启POP3/SMTP服务。(QQ邮箱--设置--账户--POP3/SMTP服务)
3、发送邮件
@RestController
public class EmailController {
@Autowired
private JavaMailSender jms;
@Value("${spring.mail.username}")
private String from;
@RequestMapping("sendEmail")
public String sendSimpleEmail() {
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo("961241246@qq.com"); // 接收地址
message.setSubject("一封测试邮件"); // 标题
message.setText("这是一封使用Spring Boot发送的邮件"); // 内容
jms.send(message);
return "发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
}
启动项目,访问http://localhost:8080/sendEmail,提示发送成功!
三、邮件样式
1、HTML格式的邮件
@RestController
public class EmailController {
@Autowired
private JavaMailSender jms;
@Value("${spring.mail.username}")
private String from;
@RequestMapping("sendHtmlEmail")
public String sendHtmlEmail() {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("961241246@qq.com"); // 接收地址
helper.setSubject("一封HTML格式的邮件"); // 标题
// 带HTML格式的内容
StringBuffer sb = new StringBuffer("<p style='color:brown'>这是一封使用Spring Boot发送HTML格式邮件。</p>");
helper.setText(sb.toString(), true);
jms.send(message);
return "发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
}
启动项目,访问http://localhost:8080/sendHtmlEmail,提示发送成功!
2、带附件的邮件
@RestController
public class EmailController {
@Autowired
private JavaMailSender jms;
@Value("${spring.mail.username}")
private String from;
@RequestMapping("sendFileMail")
public String sendAttachmentsMail() {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("961241246@qq.com"); // 接收地址
helper.setSubject("一封带附件的邮件"); // 标题
helper.setText("详情参见附件内容!"); // 内容
// 传入附件
FileSystemResource file = new FileSystemResource(new File("D:\\email\\src\\main\\resources\\测试.docx"));
helper.addAttachment("测试.docx", file);
jms.send(message);
return "发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
}
启动项目,访问http://localhost:8080/sendFileMail,提示发送成功!
3、带静态资源的邮件
@RestController
public class EmailController {
@Autowired
private JavaMailSender jms;
@Value("${spring.mail.username}")
private String from;
@RequestMapping("sendInlineMail")
public String sendInlineMail() {
MimeMessage message = null;
try {
message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("961241246@qq.com"); // 接收地址
helper.setSubject("一封带静态资源的邮件"); // 标题
helper.setText("<html><body>博客图:<img src='cid:img'/></body></html>", true); // 内容
// 传入附件
FileSystemResource file = new FileSystemResource(new File("D:\\email\\src\\main\\resources\\girl.png"));
helper.addInline("img", file);
jms.send(message);
return "发送成功";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
}
启动项目,访问http://localhost:8080/sendInlineMail,提示发送成功!