|
@@ -1,15 +1,29 @@
|
|
|
package cn.kdan.cloud.pdf.office.email.rabbit.listener;
|
|
|
|
|
|
import cn.kdan.cloud.pdf.office.api.email.bo.EmailSendBO;
|
|
|
+import cn.kdan.cloud.pdf.office.api.email.bo.TemplateHtmlBO;
|
|
|
import cn.kdan.cloud.pdf.office.common.constant.RabbitMqConstant;
|
|
|
+import cn.kdan.cloud.pdf.office.common.utils.JsonUtils;
|
|
|
+import cn.kdan.cloud.pdf.office.email.config.MailSenderConfig;
|
|
|
+import cn.kdan.cloud.pdf.office.email.entity.EmailLog;
|
|
|
+import cn.kdan.cloud.pdf.office.email.service.EmailLogService;
|
|
|
+import cn.kdan.cloud.pdf.office.email.service.EmailTemplateService;
|
|
|
import cn.kdan.cloud.pdf.office.email.service.SendEmailHandlerService;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.rabbitmq.client.Channel;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.amqp.core.Message;
|
|
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
|
|
+import org.springframework.mail.javamail.JavaMailSenderImpl;
|
|
|
+import org.springframework.mail.javamail.MimeMessageHelper;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import javax.mail.internet.MimeMessage;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
/**
|
|
|
* @author ComPDFKit-WPH 2023/1/11
|
|
|
*/
|
|
@@ -20,6 +34,10 @@ public class SendEmailListener {
|
|
|
|
|
|
private final SendEmailHandlerService sendEmailService;
|
|
|
|
|
|
+ private final MailSenderConfig mailSenderConfig;
|
|
|
+ private final EmailLogService emailLogService;
|
|
|
+ private final EmailTemplateService emailTemplateService;
|
|
|
+
|
|
|
/**
|
|
|
* 发送邮件 监听
|
|
|
*
|
|
@@ -31,7 +49,34 @@ public class SendEmailListener {
|
|
|
public void backgroundApiAddQueue(Message message, Channel channel, EmailSendBO emailSendBO) {
|
|
|
try {
|
|
|
log.info("邮件发送监听内容:{}", emailSendBO);
|
|
|
+ TemplateHtmlBO template = emailTemplateService.getTemplate(emailSendBO.getTemplateId());
|
|
|
+
|
|
|
+ JavaMailSenderImpl mailSender = mailSenderConfig.getDefaultSender();
|
|
|
+ Map<String, String> sendContent = emailSendBO.getSendContent();
|
|
|
+ String templateHtml = template.getTemplateHtml();
|
|
|
+ for (String key : sendContent.keySet()) {
|
|
|
+ templateHtml = templateHtml.replaceAll(key,sendContent.get(key));
|
|
|
+ }
|
|
|
+
|
|
|
+ MimeMessage mimeMessage = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
|
|
|
+ helper.setSubject(emailSendBO.getEmailTitle());
|
|
|
+ helper.setText(templateHtml, true);
|
|
|
+ helper.setTo(emailSendBO.getToEmail());
|
|
|
+ helper.setFrom(ObjectUtils.isEmpty(emailSendBO.getFromEmail())
|
|
|
+ ? Objects.requireNonNull(mailSender.getUsername())
|
|
|
+ : emailSendBO.getFromEmail());
|
|
|
+ mailSender.send(mimeMessage);
|
|
|
+
|
|
|
+ EmailLog emailLog = new EmailLog();
|
|
|
+ emailLog.setSendTo(emailSendBO.getToEmail());
|
|
|
+ emailLog.setSendFrom(emailSendBO.getFromEmail());
|
|
|
+ emailLog.setSendTime(new Date());
|
|
|
+ emailLog.setSendTemplate(emailSendBO.getTemplateId());
|
|
|
+ emailLog.setSendContent(JsonUtils.getJsonString(emailSendBO.getSendContent()));
|
|
|
+ emailLogService.getBaseMapper().insert(emailLog);
|
|
|
sendEmailService.sendEmail(emailSendBO);
|
|
|
+
|
|
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
|
|
} catch (Exception e) {
|
|
|
// TODO 补救策略
|