wl
2022-10-24 9969bea2a8c1eab64c12a51a2d24d65e5b6c0dd0
ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
@@ -1,8 +1,18 @@
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>
@@ -12,9 +22,74 @@
 * @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) {
        return null;
        //入库保存
        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;
    }
}