package com.ots.project.tool.email; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.extra.mail.MailUtil; import com.ots.common.enums.MailMode; import com.ots.framework.web.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; @Slf4j @Component public class EmailMessageImpl implements EmailMessage { public final static String userName = "2040239371"; public final static String password = "ivaikhcfclvlefbj"; private final static String mailServerHost = "smtp.qq.com"; private final static String mailServerPort = "465"; private final static String fromAddress = "2040239371@qq.com"; @Autowired private ConfigService configService; @Override public RushMailResult sendEmail(String emails, String title, String context) { return callSendEmail(emails, title, context, null); } private RushMailResult callSendEmail(String emails, String title, String context, String[] attachFileNames) { String mailMode = configService.getKey("MailMode"); if (Objects.equals(MailMode.RushMail.name(), mailMode)) { return rushMailMode(emails, title, context, attachFileNames); } else if (Objects.equals(MailMode.HtMail.name(), mailMode)) { return htMailMode(emails, title, context, attachFileNames); } else { return javaMailMode(emails, title, context, attachFileNames); } } private RushMailResult rushMailMode(String emails, String title, String context, String[] attachFileNames) { try { String rushMailRemoteUrl = configService.getKey("RushMailRemoteUrl"); SimpleMailSender sms = new SimpleMailSender(); RushMailInfo info = new RushMailInfo(); info.setUrl(rushMailRemoteUrl + "mail/sendattach"); info.setAccount("rushmail"); info.setEmails(emails); info.setTitle(title); info.setContext(context); info.setAttachFileNames(attachFileNames); RushMailResult rushMailResult = sms.sendPushMail(info); return rushMailResult; } catch (Exception ex) { log.error("rushMailMode 邮件目标:{} 发送失败:{}", emails, ex.getMessage(), ex); RushMailResult rushMailResult = new RushMailResult(); rushMailResult.setResult(false); return rushMailResult; } } private RushMailResult htMailMode(String emails, String title, String context, String[] attachFileNames) { RushMailResult result = new RushMailResult(); try { String[] split = emails.split(","); ArrayList tos = CollUtil.newArrayList(split); if (Objects.nonNull(attachFileNames) && attachFileNames.length > 0) { File[] files = Arrays.stream(attachFileNames).map(p -> FileUtil.file(p)).toArray(File[]::new); MailUtil.send(tos, title, context, true, files); } else { MailUtil.send(tos, title, context, true); } result.setResult(true); } catch (Exception e) { log.error("邮件目标:{} 发送失败:{}", emails, e.getMessage(), e); result.setResult(false); } return result; } RushMailResult javaMailMode(String emails, String title, String context, String[] attachFileNames) { String mailServerHost = configService.getKey("MailServerHost"); String mailServerPort = configService.getKey("MailServerPort"); String mailUserName = configService.getKey("MailUserName"); String mailPassword = configService.getKey("MailPassword"); String fromAddress = configService.getKey("FromAddress"); MailSenderInfo mailInfo = new MailSenderInfo(); mailInfo.setMailServerHost(mailServerHost); mailInfo.setMailServerPort(mailServerPort); mailInfo.setValidate(true); mailInfo.setUserName(mailUserName); mailInfo.setPassword(mailPassword); mailInfo.setFromAddress(fromAddress); mailInfo.setToAddress(emails); mailInfo.setSubject(title); mailInfo.setContent(context); if (Objects.nonNull(attachFileNames)) { mailInfo.setAttachFileNames(attachFileNames); } SimpleMailSender sms = new SimpleMailSender(); RushMailResult rushMailResult = new RushMailResult(); try { sms.sendTextMail(mailInfo); rushMailResult.setResult(true); } catch (Exception e) { log.error("邮件目标:{} 发送失败:{}", emails, e.getMessage(), e); rushMailResult.setResult(false); } return rushMailResult; } @Override public RushMailResult sendEmailwithAttachment(String emails, String title, String context, String[] attachFileNames) { return callSendEmail(emails, title, context, attachFileNames); } }