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; /** *

* 邮件发送器 *

* * @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