SpringBoot集成mail
核心
- 引入jar:
spring-boot-starter-mail
- 配置yml:
spring.mail.xxx
- 调用mail服务
- EmailServiceImpl.java
- EmailMoreServiceImpl.java
示例代码
在pom.xml
添加mail
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.4.2</version>
</dependency>
在application.yml
配置mail参数
spring:
mail:
host: smtp.163.com
username: tpc163.com
password: MGATPTPCXX
port: 465
protocol: smtp
test-connection: false
default-encoding: UTF-8
properties:
mail:
debug: true
smtp:
auth: true
connectiontimeout: 10000
timeout: 10000
writetimeout: 10000
socketFactory:
class: javax.net.ssl.SSLSocketFactory
port: 465
starttls:
enable: true
required: true
调用mail服务
@Component
public class EmailServiceImpl {
@Value("${spring.mail.username}")
private String from;
@Resource
private JavaMailSender javaMailSender;
public void sendSimpleMail(String to, String subject, String content) {
log.info("发送简单邮件");
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
javaMailSender.send(message);
log.info("简单邮件发送成功");
} catch (Exception e) {
log.error("简单邮件发送异常!", e);
}
}
public void sendHtmlMail(String to, String subject, String content) {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
javaMailSender.send(message);
log.info("HTML邮件发送成功");
} catch (MessagingException e) {
log.error("HTML邮件发送异常!", e);
}
}
public void sendFileMail(String to, String subject, String content, String filePath) {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
javaMailSender.send(message);
log.info("带附件邮件发送成功");
} catch (MessagingException e) {
log.error("带附件邮件发送异常!", e);
}
}
public void sendStaticResourceMail(String to, String subject, String content, String resourcePath, String resourceId) {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource resource = new FileSystemResource(new File(resourcePath));
helper.addInline(resourceId, resource);
javaMailSender.send(message);
log.info("静态资源邮件发送成功");
} catch (MessagingException e) {
log.error("静态资源邮件发送异常!", e);
}
}
}
其他
- 获取Email邮件发送状态
- Transport使用TransportListener实现
- 猜测JavaMailSender使用try/catch实现
- 收件人设置
- 发送(javax.mail.Message.RecipientType.TO)
- 抄送(javax.mail.Message.RecipientType.CC)
- 密送(javax.mail.Message.RecipientType.BCC)
- 群发(javax.mail.internet.MimeMessage.RecipientType.NEWSGROUPS)
参考