@Override
@Async
public void sendEmail(String[] sendTo, String emailType, Object emailContent) {
SysEmail sysEmail = sysEmailMapper.selectList(new EntityWrapper<>()).get(0);
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setUsername(sysEmail.getSenderEmail());
javaMailSender.setPassword(sysEmail.getPassword());
Properties properties = new Properties();
//直连邮件服务器
properties.put("mail.smtp.host", sysEmail.getEmailServer());
properties.put("mail.smtp.port", String.valueOf(sysEmail.getPort()));
properties.put("mail.smtp.auth", "true");
//配置邮件代理服务器
properties.setProperty("proxySet", "true");
properties.put("mail.smtp.socks.host", sysEmail.getEmailProxy());
properties.put("mail.smtp.socks.port", String.valueOf(sysEmail.getPortProxy()));
//使用SSL,企业邮箱必需!
properties.put("mail.smtp.socketFactory.port", sysEmail.getPort());
properties.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
javaMailSender.setJavaMailProperties(properties);
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("to", sendTo);
valueMap.put("from", sysEmail.getSenderEmail());
valueMap.put("emailType", emailType);
if (EmailTool.Tenancy_Email.equals(emailType)) {
TenancyEmailContent tenancyEmailContent = (TenancyEmailContent) emailContent;
valueMap.put("serverList", tenancyEmailContent.getServerList());
}
try {
emailTool.sendSimpleMail(valueMap, javaMailSender);
} catch (Exception e) {
logger.error("邮件发送失败,邮件类型为"+emailType +e.getMessage());
throw new BaseServiceException("500", "邮件发送失败,邮件类型为"+emailType
+e.getMessage());
}
}
public void sendSimpleMail(Map<String, Object> valueMap, JavaMailSenderImpl
javaMailSender) {
MimeMessage mimeMessage;
try {
mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "utf-8");
// 设置发件人邮箱
helper.setFrom(valueMap.get("from").toString());
// 设置收件人邮箱
helper.setTo((String[])valueMap.get("to"));
// 添加正文(使用thymeleaf模板)
String emailType = valueMap.get("emailType").toString();
SysEmailContent emailContent = (SysEmailContent)
emailContentMapper.selectList(new EntityWrapper().eq("email_type",
emailType)).get(0);
StringBuffer content = new StringBuffer();
helper.setText(content.toString(), true);
// 发送邮件
javaMailSender.send(mimeMessage);
StringBuffer stringBuffer = new StringBuffer();
Arrays.stream((String[]) valueMap.get("to")).forEach(s ->
stringBuffer.append(s+","));
logger.info("邮件发送成功,邮件类型为"+emailType +"发送的人员有"+
stringBuffer.toString().substring(0,stringBuffer.toString().length() - 1));
operationLogger.saveLog(new Date(), new Date(), LogModuleType.EMAIL, "邮件发
送成功,邮件类型为"+emailType +"发送的人员有"+ stringBuffer.toString(),
LogOptType.INSERT);
} catch (Exception e) {
logger.error("邮件发送失败"+e.getMessage());
throw new BaseServiceException("500", "邮件发送失败"+e.getMessage());
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>