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.Sender;
|
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;
|
}
|
|
@Override
|
public Message sendMessage(MessageParam messageParam) {
|
|
//入库保存
|
Message message = innerSender.sendMessage(messageParam);
|
//组装邮件发送
|
JavaMailSenderImpl sender = new JavaMailSenderImpl();
|
sender.setHost(propertyValueUtil.getHost());
|
sender.setUsername(propertyValueUtil.getUsername());
|
sender.setPassword(propertyValueUtil.getAuthorizationCode());
|
|
String[] mailUrls = messageParam.getTargetTo().split(",");
|
SimpleMailMessage[] messageList = new SimpleMailMessage[mailUrls.length];
|
for (int i=0;i<messageList.length;i++) {
|
SimpleMailMessage messageTo = new SimpleMailMessage();
|
messageTo.setFrom(messageParam.getTargetFrom());
|
messageTo.setTo(mailUrls[i]);
|
messageTo.setSubject(messageParam.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;
|
}
|
}
|