介绍
参考连接:spring-boot-demo
springboot整合Mail简单文本邮件
开始
pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<jasypt.version>2.1.1</jasypt.version>
</properties>
<dependencies>
<!-- Spring Boot 邮件依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--jasypt配置文件加解密-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.1</version>
</dependency>
<!-- Spring Boot 模板依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<finalName>spring-boot-demo-email</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
application.yml
spring:
mail:
host: smtp.qq.com #SMTP服务器地址
port: 465
username: ***3457107 #登陆账号
# 敏感数据时,可用jasypt加密,格式:ENC(加密字符串),算法:
password: ENC(your encryptor code) #登陆密码(或授权码)
#服务协议
protocol: smtp
# 连接失败,跳过错误
test-connection: true
# 编码集
default-encoding: UTF-8
properties:
from: ***3457107@qq.com #邮件发信人(即真实邮箱)
to: ***7887868@qq.com # 邮件接信人(为方便测试)
# 设置是否需要认证
mail.smtp.auth: true
#
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
# ssl
mail.smtp.ssl.enable: true
servlet:
multipart:
max-file-size: 10MB #限制单个文件大小
max-request-size: 50MB #限制请求总量
# 为 jasypt 配置解密秘钥
jasypt:
encryptor:
password: hikktn
# 自定义算法,默认算法:PBEWithMD5AndDES
ivGeneratorClassname: org.jasypt.salt.RandomIVGenerator
MailService.java
public class MailService {
/**
* java邮件发送类
*/
@Autowired
private JavaMailSender mailSender;
/**
* 发件人邮箱
*/
@Value("${spring.mail.properties.from}")
private String from;
/**
* 收件人邮箱
*/
@Value("${spring.mail.properties.to}")
private String to;
/**
* 发送正文中有静态资源的邮件
*
* @param subject 邮件主题
* @param content 邮件内容
* @param rscPath 静态资源地址
* @param rscId 静态资源id
* @param cc 抄送地址
* @throws MessagingException 邮件发送异常
*/
@Override
public void sendResourceMail(String subject, String content, String rscPath, String rscId, String... cc) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
if (ArrayUtil.isNotEmpty(cc)) {
helper.setCc(cc);
}
FileSystemResource file = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, file);
mailSender.send(message);
}
}
静态资源
存放目录:resources\static\xkcoding.png
测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {
@Autowired
private MailService mailService;
/**
* 测试静态资源邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendResourceMail() throws MessagingException {
String rscId = "xkcoding";
String content = "<html><body>这是带静态资源的邮件<br/><img src=\'cid:" + rscId + "\' ></body></html>";
URL resource = ResourceUtil.getResource("static/xkcoding.png");
mailService.sendResourceMail( "这是一封带静态资源的邮件", content, resource.getPath(), rscId);
}
}