wl
2022-11-08 39f08dd934cde1a02f1c243faa43174fa474c87f
ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
@@ -3,7 +3,9 @@
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 com.ycl.service.user.UmsAdminService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -34,35 +36,52 @@
    public void setPropertyValueUtil(PropertyValueUtil propertyValueUtil) {
        MailSender.propertyValueUtil = propertyValueUtil;
    }
    private static UmsAdminService adminService;
    @Autowired
    public void setUmsAdminService(UmsAdminService adminService) {
        MailSender.adminService = adminService;
    }
    @Override
    public Message sendMessage(MessageParam messageParam) {
        //入库保存
        Message message = innerSender.sendMessage(messageParam);
        if (messageParam.getStatus() == 1) {
            //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[] mailUrls = messageParam.getTargetTo().split(",");
        SimpleMailMessage[] messageList = new SimpleMailMessage[mailUrls.length];
        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(messageParam.getTargetFrom());
            messageTo.setTo(mailUrls[i]);
            messageTo.setSubject(messageParam.getHead());
            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;
    }