package com.ycl.service.message.factory;
|
|
import com.ycl.common.util.PropertyValueUtil;
|
import com.ycl.dto.message.MessageParam;
|
import com.ycl.entity.message.Message;
|
import com.ycl.exception.ApiException;
|
import com.ycl.service.message.ISmsAuditService;
|
import com.ycl.service.message.Sender;
|
import com.ycl.service.user.UmsAdminService;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.mail.SimpleMailMessage;
|
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
import org.springframework.stereotype.Component;
|
|
/**
|
* <p>
|
* 邮件发送器
|
* </p>
|
*
|
* @author mg
|
* @since 2022-10-09
|
*/
|
@Component
|
public class MailSender implements Sender {
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
private static InnerSender innerSender;
|
@Autowired
|
public void setIMessageService(InnerSender innerSender) {
|
MailSender.innerSender = innerSender;
|
}
|
|
private static PropertyValueUtil propertyValueUtil;
|
@Autowired
|
public void setPropertyValueUtil(PropertyValueUtil propertyValueUtil) {
|
MailSender.propertyValueUtil = propertyValueUtil;
|
}
|
private static ISmsAuditService iSmsAuditService;
|
@Autowired
|
public void setISmsAuditService(ISmsAuditService iSmsAuditService) {
|
MailSender.iSmsAuditService = iSmsAuditService;
|
}
|
|
private static UmsAdminService adminService;
|
@Autowired
|
public void setUmsAdminService(UmsAdminService adminService) {
|
MailSender.adminService = adminService;
|
}
|
|
@Override
|
public Message sendMessage(MessageParam messageParam) {
|
//入库保存
|
Message message = innerSender.sendMessage(messageParam);
|
//发起审核
|
iSmsAuditService.startAuditSms(message);
|
//id换成邮箱号
|
String targetToMail = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
|
message.setTargetTo(targetToMail);
|
//发送邮件
|
sendMail(message);
|
return message;
|
}
|
|
public Message sendMail(Message message) {
|
//组装邮件发送
|
JavaMailSenderImpl sender = new JavaMailSenderImpl();
|
sender.setHost(propertyValueUtil.getHost());
|
sender.setUsername(propertyValueUtil.getUsername());
|
sender.setPassword(propertyValueUtil.getAuthorizationCode());
|
|
String[] mails = message.getTargetTo().split(",");
|
SimpleMailMessage[] messageList = new SimpleMailMessage[mails.length];
|
for (int i=0;i<messageList.length;i++) {
|
SimpleMailMessage messageTo = new SimpleMailMessage();
|
messageTo.setFrom(propertyValueUtil.getUsername());
|
messageTo.setTo(mails[i]);
|
messageTo.setSubject(message.getHead());
|
messageTo.setText(message.getBody());
|
messageList[i] = messageTo;
|
}
|
try {
|
sender.send(messageList);
|
logger.info("简单邮件已发送");
|
|
}catch (Exception e){
|
e.printStackTrace();
|
logger.error("发送简单邮件时发生异常!", e);
|
e.printStackTrace();
|
throw new ApiException("发送简单邮件时发生异常");
|
}
|
return message;
|
}
|
}
|