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