Spring Boot 发送简单邮件、HTML5邮件、图片邮件、带附件的邮件以及thymeleaf模版邮件
spring-boot-starter-mail
- 网站发送邮件最早使用 JavaMail相关 API 来写发送邮件的相关代码,后来 Spring 推出了 JavaMailSender 简化了邮件发送代码的编写。现在Spring Boot 在 JavaMailSender 的基础上又进行了封装,就有了现在的 spring-boot-starter-mail
- Spring 的 JavaMailSenderImpl 提供了强大的邮件发送功能,可发送普通文本邮件、带附件邮件、HTML格式邮件、带图片邮件,设置发送内容编码格式、设置发送人的显示名称
JavaMail API 按功能可分为如下三大类:
- Message 类 :创建和解析邮件的核心 API,用于创建一封邮件,可以设置发件人、收件人、邮件主题、正文信息、发送时间等信息
- Transport 类:发送邮件的核心 API 类
- Store 类:接收邮件的核心API类
邮件的相关协议
- SMTP 协议:发送邮件协议
- POP3 协议:获取邮件协议;
- IMAP:接收信息的高级协议;
- MIME:邮件拓展内容格式:信息格式,附件格式
图示互相发送邮件的过程
初始化项目
我演示的是QQ邮箱,所以先把QQ邮箱的SMTP和POP3服务等开起来
记住这个授权码
项目结构
pom.xml导入以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
在application.properties做如下配置,需要将 spring.mail.username 和 spring.mail.password 改成自己邮箱对应的登录名和是开启 POP3 之后设置的客户端授权密码
spring.mail.host=smtp.qq.com
spring.mail.username=你的QQ邮箱号@qq.com
spring.mail.password=刚刚的授权码
spring.mail.default-encoding=UTF-8
MailService.java
package wen.mail.service;
public interface MailService {
public void sendSimpleMail(String to, String subject, String content);
public void sendHtmlMail(String to, String subject, String content);
public void sendAttachmentsMail(String to, String subject, String content, String filePath);
public void sendInlineResourcesMail(String to, String subject, String content, String srcPath, String srcId);
}
实现类MailServiceImpl.java<