介绍
参考连接: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 filePath 附件地址
* @param cc 抄送地址
* @throws MessagingException 邮件发送异常
*/
@Override
public void sendAttachmentsMail(String subject, String content, String filePath, String... cc) throws MessagingException {
// 创建模板消息类
MimeMessage message = mailSender.createMimeMessage();
// 创建模板消息附带信息,是否发送的邮件是富文本(附件,图片,html等)
MimeMessageHelper helper = new MimeMessageHelper(message, true);
// 设置发件人邮箱
helper.setFrom(from);
// 设置收件人邮箱
helper.setTo(to);
// 设置邮件标题
helper.setSubject(subject);
// 设置邮件主体内容, true 表示带有附件或html
helper.setText(content, true);
// 抄送人不为空的场合
if (ArrayUtil.isNotEmpty(cc)) {
// 设置抄送人
helper.setCc(cc);
}
// 创建系统文件资源
FileSystemResource file = new FileSystemResource(new File(filePath));
// File.separator:“\"
// String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
String fileName = file.getFilename();
// 添加邮件附件
helper.addAttachment(fileName, file);
// 发送消息
mailSender.send(message);
}
}
上传的附件
存放目录:static\xkcoding.png
测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {
@Autowired
private MailService mailService;
/**
* 测试附件邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendAttachmentsMail() throws MessagingException {
URL resource = ResourceUtil.getResource("static/xkcoding.png");
mailService.sendAttachmentsMail("这是一封带附件的邮件", "邮件中有附件,请注意查收!", resource.getPath());
}
}