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<String> 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);
|
}
|
}
|