1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置yml
spring:
mail:
host: smtp.qq.com #这是邮箱服务器地址
username: XXXX@qq.com #自己的邮箱,也就是发件人。相当于账号
password: XXXXXX #邮箱授权码,相当于密码
default-encoding: UTF-8 #编码格式
port: 465
properties:
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
mail.debug: true
mail.smtp.ssl.enable: true
mail:
smtp:
ssl:
protocols: TLSv1.2
3.业务层实现
@Override
@Transactional(rollbackFor = Exception.class)
public void sendMail() {
List<MonitorAlarmManageDtl> list = listAlarm();
if (ObjectUtils.isEmpty(list)){
return;
}
for (MonitorAlarmManageDtl monitorAlarmManageDtl : list) {
// 发送告警邮件
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 发件人邮箱,与配置文件中保持一致,所以直接从配置文件绑定过来了
// mailMessage.setFrom(mailUserName);
// 这个发件人也可以设置为中文名称, 如下代码
mailMessage.setFrom("pcis系统" + "<" + mailUserName + ">");
// 收件人
String email = monitorAlarmManageDtl.getRecipientEmail();
mailMessage.setTo(email);
// 标题
String subject = monitorAlarmManageDtl.getSubject();
mailMessage.setSubject(subject);
// 内容, 第一个参数为邮箱内容, 第二个参数为是否启用html格式,
// 如果开启, 那么第一个参数如果有html标签, 会自动识别, 邮件样式更好看
mailMessage.setText("模块:" + monitorAlarmManageDtl.getModuleName() + ",\n" +
"设置的阈值:" + monitorAlarmManageDtl.getErrorThreshold() + ",\n" +
"目前错误次数:" + monitorAlarmManageDtl.getErrorCount() + ",\n" +
"备注内容:" + monitorAlarmManageDtl.getAlarmContent());
try {
javaMailSender.send(mailMessage);
}catch (Exception e){
throw new ServiceException("邮件发送参数有误,请检查邮箱账号是否正确");
}
MonitorAlarmManage monitorAlarmManage = new MonitorAlarmManage();
BeanUtil.copyProperties(monitorAlarmManageDtl,monitorAlarmManage);
monitorAlarmManage.setStatus(SysConstant.STOP);
monitorAlarmManageMapper.updateById(monitorAlarmManage);
log.info("mail send success,mail info : {},monitorAlarmManageDtl : {}",mailMessage,monitorAlarmManageDtl);
}
}