24282 2 年之前
父節點
當前提交
7e9c8ed7f0
共有 25 個文件被更改,包括 636 次插入37 次删除
  1. 2 2
      src/main/java/com/fjhx/config/CodeGeneration.java
  2. 0 10
      src/main/java/com/fjhx/controller/AccountController.java
  3. 37 0
      src/main/java/com/fjhx/controller/EmailMessageSendController.java
  4. 18 0
      src/main/java/com/fjhx/controller/EmailMessageSendReceiveController.java
  5. 13 8
      src/main/java/com/fjhx/entity/EmailMessageSend.java
  6. 49 0
      src/main/java/com/fjhx/entity/EmailMessageSendAttachment.java
  7. 44 0
      src/main/java/com/fjhx/entity/EmailMessageSendContent.java
  8. 54 0
      src/main/java/com/fjhx/entity/EmailMessageSendReceive.java
  9. 16 0
      src/main/java/com/fjhx/mapper/EmailMessageSendAttachmentMapper.java
  10. 16 0
      src/main/java/com/fjhx/mapper/EmailMessageSendContentMapper.java
  11. 16 0
      src/main/java/com/fjhx/mapper/EmailMessageSendReceiveMapper.java
  12. 5 0
      src/main/java/com/fjhx/mapper/xml/EmailMessageSendAttachmentMapper.xml
  13. 5 0
      src/main/java/com/fjhx/mapper/xml/EmailMessageSendContentMapper.xml
  14. 5 0
      src/main/java/com/fjhx/mapper/xml/EmailMessageSendReceiveMapper.xml
  15. 0 5
      src/main/java/com/fjhx/service/IAccountService.java
  16. 16 0
      src/main/java/com/fjhx/service/IEmailMessageSendAttachmentService.java
  17. 16 0
      src/main/java/com/fjhx/service/IEmailMessageSendContentService.java
  18. 16 0
      src/main/java/com/fjhx/service/IEmailMessageSendReceiveService.java
  19. 6 2
      src/main/java/com/fjhx/service/IEmailMessageSendService.java
  20. 2 7
      src/main/java/com/fjhx/service/impl/AccountServiceImpl.java
  21. 20 0
      src/main/java/com/fjhx/service/impl/EmailMessageSendAttachmentServiceImpl.java
  22. 20 0
      src/main/java/com/fjhx/service/impl/EmailMessageSendContentServiceImpl.java
  23. 20 0
      src/main/java/com/fjhx/service/impl/EmailMessageSendReceiveServiceImpl.java
  24. 195 3
      src/main/java/com/fjhx/service/impl/EmailMessageSendServiceImpl.java
  25. 45 0
      src/main/java/com/fjhx/vo/SendVo.java

+ 2 - 2
src/main/java/com/fjhx/config/CodeGeneration.java

@@ -25,10 +25,10 @@ public class CodeGeneration {
                 })
                 .strategyConfig(builder -> builder
                                 // 设置需要生成的表名
-                                .addInclude("email_message_content")
+                                .addInclude("email_message_send_receive")
                                 .entityBuilder()
                                 .disableSerialVersionUID()
-                                .superClass(BaseEntity.class)
+                                // .superClass(BaseEntity.class)
                                 .enableLombok()
                         // .addIgnoreColumns("create_time", "update_time")
                 )

+ 0 - 10
src/main/java/com/fjhx/controller/AccountController.java

@@ -54,14 +54,4 @@ public class AccountController {
         return R.ok();
     }
 
-    /**
-     * 发送邮件
-     */
-    @PostMapping("submit")
-    public R submit(@RequestBody SubmitVo submitVo) {
-        System.out.println(JSON.toJSONString(submitVo));
-        accountService.submit(submitVo);
-        return R.ok();
-    }
-
 }

+ 37 - 0
src/main/java/com/fjhx/controller/EmailMessageSendController.java

@@ -0,0 +1,37 @@
+package com.fjhx.controller;
+
+import com.fjhx.base.R;
+import com.fjhx.service.IEmailMessageSendService;
+import com.fjhx.vo.SendVo;
+import com.fjhx.vo.SubmitVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-21
+ */
+@RestController
+@RequestMapping("/emailMessageSend")
+public class EmailMessageSendController {
+
+    @Autowired
+    private IEmailMessageSendService emailMessageSendService;
+
+    /**
+     * 发送邮件
+     */
+    @PostMapping("send")
+    public R send(@RequestBody SubmitVo submitVo) {
+        emailMessageSendService.send(submitVo);
+        return R.ok();
+    }
+
+}

+ 18 - 0
src/main/java/com/fjhx/controller/EmailMessageSendReceiveController.java

@@ -0,0 +1,18 @@
+package com.fjhx.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 邮件发件信息 前端控制器
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Controller
+@RequestMapping("/emailMessageSendReceive")
+public class EmailMessageSendReceiveController {
+
+}

+ 13 - 8
src/main/java/com/fjhx/entity/EmailMessageSend.java

@@ -26,24 +26,29 @@ public class EmailMessageSend implements Serializable {
     private Long id;
 
     /**
-     * 邮件id
+     * 电子邮件
      */
-    private String messageId;
+    private String email;
 
     /**
-     * 类型 1收件人 2抄送人 3密送人
+     * 电子邮件id
      */
-    private Integer type;
+    private Long emailInfoId;
 
     /**
-     * 推送人名称
+     * 邮件标题
      */
-    private String name;
+    private String subject;
 
     /**
-     * 推送人地址
+     * 发送人
      */
-    private String address;
+    private String fromName;
+
+    /**
+     * 是否展示
+     */
+    private Boolean isShow;
 
     /**
      * 创建时间

+ 49 - 0
src/main/java/com/fjhx/entity/EmailMessageSendAttachment.java

@@ -0,0 +1,49 @@
+package com.fjhx.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 邮件发件信息
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Getter
+@Setter
+@TableName("email_message_send_attachment")
+public class EmailMessageSendAttachment implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 发送邮件id
+     */
+    private Long messageSendId;
+
+    /**
+     * 附件名称
+     */
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    private String path;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+}

+ 44 - 0
src/main/java/com/fjhx/entity/EmailMessageSendContent.java

@@ -0,0 +1,44 @@
+package com.fjhx.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 邮件发件信息
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Getter
+@Setter
+@TableName("email_message_send_content")
+public class EmailMessageSendContent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 发送邮件id
+     */
+    private Long messageSendId;
+
+    /**
+     * 正文内容
+     */
+    private String htmlContent;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+}

+ 54 - 0
src/main/java/com/fjhx/entity/EmailMessageSendReceive.java

@@ -0,0 +1,54 @@
+package com.fjhx.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 邮件发件信息
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Getter
+@Setter
+@TableName("email_message_send_receive")
+public class EmailMessageSendReceive {
+
+    /**
+     * 推送信息
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 邮件id
+     */
+    private Long messageSendId;
+
+    /**
+     * 类型 1收件人 2抄送人 3密送人 4 回复人
+     */
+    private int type;
+
+    /**
+     * 推送人名称
+     */
+    private String name;
+
+    /**
+     * 推送人地址
+     */
+    private String address;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+}

+ 16 - 0
src/main/java/com/fjhx/mapper/EmailMessageSendAttachmentMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper;
+
+import com.fjhx.entity.EmailMessageSendAttachment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 邮件发件信息 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+public interface EmailMessageSendAttachmentMapper extends BaseMapper<EmailMessageSendAttachment> {
+
+}

+ 16 - 0
src/main/java/com/fjhx/mapper/EmailMessageSendContentMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper;
+
+import com.fjhx.entity.EmailMessageSendContent;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 邮件发件信息 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+public interface EmailMessageSendContentMapper extends BaseMapper<EmailMessageSendContent> {
+
+}

+ 16 - 0
src/main/java/com/fjhx/mapper/EmailMessageSendReceiveMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper;
+
+import com.fjhx.entity.EmailMessageSendReceive;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 邮件发件信息 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+public interface EmailMessageSendReceiveMapper extends BaseMapper<EmailMessageSendReceive> {
+
+}

+ 5 - 0
src/main/java/com/fjhx/mapper/xml/EmailMessageSendAttachmentMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.EmailMessageSendAttachmentMapper">
+
+</mapper>

+ 5 - 0
src/main/java/com/fjhx/mapper/xml/EmailMessageSendContentMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.EmailMessageSendContentMapper">
+
+</mapper>

+ 5 - 0
src/main/java/com/fjhx/mapper/xml/EmailMessageSendReceiveMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.EmailMessageSendReceiveMapper">
+
+</mapper>

+ 0 - 5
src/main/java/com/fjhx/service/IAccountService.java

@@ -17,9 +17,4 @@ public interface IAccountService {
      */
     void listener(ListenerVo listenerVo);
 
-    /**
-     * 发送邮件
-     */
-    void submit(SubmitVo submitVo);
-
 }

+ 16 - 0
src/main/java/com/fjhx/service/IEmailMessageSendAttachmentService.java

@@ -0,0 +1,16 @@
+package com.fjhx.service;
+
+import com.fjhx.entity.EmailMessageSendAttachment;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 邮件发件信息 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+public interface IEmailMessageSendAttachmentService extends IService<EmailMessageSendAttachment> {
+
+}

+ 16 - 0
src/main/java/com/fjhx/service/IEmailMessageSendContentService.java

@@ -0,0 +1,16 @@
+package com.fjhx.service;
+
+import com.fjhx.entity.EmailMessageSendContent;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 邮件发件信息 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+public interface IEmailMessageSendContentService extends IService<EmailMessageSendContent> {
+
+}

+ 16 - 0
src/main/java/com/fjhx/service/IEmailMessageSendReceiveService.java

@@ -0,0 +1,16 @@
+package com.fjhx.service;
+
+import com.fjhx.entity.EmailMessageSendReceive;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 邮件发件信息 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+public interface IEmailMessageSendReceiveService extends IService<EmailMessageSendReceive> {
+
+}

+ 6 - 2
src/main/java/com/fjhx/service/IEmailMessageSendService.java

@@ -1,7 +1,9 @@
 package com.fjhx.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.base.BaseService;
 import com.fjhx.entity.EmailMessageSend;
+import com.fjhx.vo.SendVo;
+import com.fjhx.vo.SubmitVo;
 
 /**
  * <p>
@@ -11,6 +13,8 @@ import com.fjhx.entity.EmailMessageSend;
  * @author zlj
  * @since 2022-12-21
  */
-public interface IEmailMessageSendService extends IService<EmailMessageSend> {
+public interface IEmailMessageSendService extends BaseService<EmailMessageSend> {
+
+    void send(SubmitVo submitVo);
 
 }

+ 2 - 7
src/main/java/com/fjhx/service/impl/AccountServiceImpl.java

@@ -61,8 +61,8 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
     @Autowired
     private Executor syncExecutor;
 
-    public static final List<String> syncMessageContentList = Collections.synchronizedList(new ArrayList<>(100));
-    public static final List<String> syncMessageAttachmentList = Collections.synchronizedList(new ArrayList<>(100));
+    public static final List<String> syncMessageContentList = Collections.synchronizedList(new ArrayList<>());
+    public static final List<String> syncMessageAttachmentList = Collections.synchronizedList(new ArrayList<>());
 
     /**
      * 每页获取多少封邮件
@@ -242,11 +242,6 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
 
     }
 
-    @Override
-    public void submit(SubmitVo submitVo) {
-        EmailEngineUtil.submit(submitVo);
-    }
-
     /**
      * 同步邮件进度初始化
      */

+ 20 - 0
src/main/java/com/fjhx/service/impl/EmailMessageSendAttachmentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fjhx.service.impl;
+
+import com.fjhx.entity.EmailMessageSendAttachment;
+import com.fjhx.mapper.EmailMessageSendAttachmentMapper;
+import com.fjhx.service.IEmailMessageSendAttachmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 邮件发件信息 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Service
+public class EmailMessageSendAttachmentServiceImpl extends ServiceImpl<EmailMessageSendAttachmentMapper, EmailMessageSendAttachment> implements IEmailMessageSendAttachmentService {
+
+}

+ 20 - 0
src/main/java/com/fjhx/service/impl/EmailMessageSendContentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fjhx.service.impl;
+
+import com.fjhx.entity.EmailMessageSendContent;
+import com.fjhx.mapper.EmailMessageSendContentMapper;
+import com.fjhx.service.IEmailMessageSendContentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 邮件发件信息 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Service
+public class EmailMessageSendContentServiceImpl extends ServiceImpl<EmailMessageSendContentMapper, EmailMessageSendContent> implements IEmailMessageSendContentService {
+
+}

+ 20 - 0
src/main/java/com/fjhx/service/impl/EmailMessageSendReceiveServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fjhx.service.impl;
+
+import com.fjhx.entity.EmailMessageSendReceive;
+import com.fjhx.mapper.EmailMessageSendReceiveMapper;
+import com.fjhx.service.IEmailMessageSendReceiveService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 邮件发件信息 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-01-13
+ */
+@Service
+public class EmailMessageSendReceiveServiceImpl extends ServiceImpl<EmailMessageSendReceiveMapper, EmailMessageSendReceive> implements IEmailMessageSendReceiveService {
+
+}

+ 195 - 3
src/main/java/com/fjhx/service/impl/EmailMessageSendServiceImpl.java

@@ -1,10 +1,27 @@
 package com.fjhx.service.impl;
 
-import com.fjhx.entity.EmailMessageSend;
-import com.fjhx.mapper.EmailMessageSendMapper;
-import com.fjhx.service.IEmailMessageSendService;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.config.exception.ServiceException;
+import com.fjhx.entity.*;
+import com.fjhx.mapper.EmailMessageSendMapper;
+import com.fjhx.service.*;
+import com.fjhx.utils.EmailEngineUtil;
+import com.fjhx.vo.SubmitVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import sun.misc.BASE64Decoder;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +34,179 @@ import org.springframework.stereotype.Service;
 @Service
 public class EmailMessageSendServiceImpl extends ServiceImpl<EmailMessageSendMapper, EmailMessageSend> implements IEmailMessageSendService {
 
+    @Autowired
+    private IEmailInfoService emailInfoService;
+
+    @Autowired
+    private IEmailMessageSendAttachmentService emailMessageSendAttachmentService;
+
+    @Autowired
+    private IEmailMessageSendContentService emailMessageSendContentService;
+
+    @Autowired
+    private IEmailMessageSendReceiveService emailMessageSendReceiveService;
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void send(SubmitVo submitVo) {
+        SubmitVo.ToDTO from = submitVo.getFrom();
+        Assert.notNull(from, "发送人信息不能为空");
+        String email = from.getAddress();
+        String fromName = from.getName();
+
+        // 发送邮件信息
+        EmailInfo emailInfo = emailInfoService.getOne(q -> q.eq(EmailInfo::getEmail, email));
+        Assert.notNull(emailInfo, "未找到邮箱信息");
+
+        // 发送邮件id
+        long messageSendId = IdWorker.getId();
+
+        // 添加发送邮件信息
+        this.add(messageSendId, emailInfo.getId(), emailInfo.getEmail(), submitVo.getSubject(), fromName);
+
+        // 添加发送邮件附件信息
+        this.attachmentSaveBatch(messageSendId, email, submitVo);
+
+        // 添加发送邮件正文信息
+        this.contentSave(messageSendId, submitVo.getHtml());
+
+        // 添加收件信息
+        this.receiveSaveBatch(messageSendId, submitVo);
+
+        EmailEngineUtil.submit(submitVo);
+    }
+
+    /**
+     * 添加发送邮件信息
+     */
+    private void add(long messageSendId, Long emailInfoId, String email, String subject, String fromName) {
+        EmailMessageSend emailMessageSend = new EmailMessageSend();
+        emailMessageSend.setId(messageSendId);
+        emailMessageSend.setEmailInfoId(emailInfoId);
+        emailMessageSend.setEmail(email);
+        emailMessageSend.setSubject(subject);
+        emailMessageSend.setFromName(fromName);
+        emailMessageSend.setIsShow(true);
+
+        save(emailMessageSend);
+    }
+
+    /**
+     * 添加发送邮件附件信息
+     */
+    private void attachmentSaveBatch(long messageSendId, String email, SubmitVo submitVo) {
+
+        // 路径
+        String path = EmailEngineUtil.attachmentPath + "send/" + email;
+        File pathFile = new File(path);
+        if (!pathFile.exists()) {
+            pathFile.mkdirs();
+        }
+
+        // 邮件发件列表
+        List<EmailMessageSendAttachment> emailMessageSendAttachmentList = new ArrayList<>();
+
+        List<SubmitVo.AttachmentsDTO> attachments = submitVo.getAttachments();
+        for (SubmitVo.AttachmentsDTO attachment : attachments) {
+            attachment.setContentType("application/octet-stream");
+
+            String filename = attachment.getFilename();
+            String content = attachment.getContent();
+
+            String fileName = IdWorker.getId() + "." + FileUtil.getSuffix(filename);
+            File file = new File(path + "/" + fileName);
+
+            BufferedOutputStream bos = null;
+            FileOutputStream fos = null;
+            try {
+                BASE64Decoder decoder = new BASE64Decoder();
+                byte[] bytes = decoder.decodeBuffer(content);
+                fos = new FileOutputStream(file);
+                bos = new BufferedOutputStream(fos);
+                bos.write(bytes);
+            } catch (Exception e) {
+                throw new ServiceException("文件 " + filename + " 下载失败");
+            } finally {
+                IoUtil.close(bos);
+                IoUtil.close(fos);
+            }
+
+            EmailMessageSendAttachment emailMessageSendAttachment = new EmailMessageSendAttachment();
+            emailMessageSendAttachment.setMessageSendId(messageSendId);
+            emailMessageSendAttachment.setName(filename);
+            emailMessageSendAttachment.setPath("send/" + email + "/" + fileName);
+
+            emailMessageSendAttachmentList.add(emailMessageSendAttachment);
+        }
+        emailMessageSendAttachmentService.saveBatch(emailMessageSendAttachmentList);
+    }
+
+    /**
+     * 添加发送邮件正文信息
+     */
+    private void contentSave(Long messageSendId, String html) {
+        EmailMessageSendContent emailMessageSendContent = new EmailMessageSendContent();
+        emailMessageSendContent.setMessageSendId(messageSendId);
+        emailMessageSendContent.setHtmlContent(html);
+        emailMessageSendContentService.save(emailMessageSendContent);
+    }
+
+    /**
+     * 添加收件信息
+     */
+    private void receiveSaveBatch(long messageSendId, SubmitVo submitVo) {
+        List<EmailMessageSendReceive> emailMessageSendReceiveList = new ArrayList<>();
+
+        List<SubmitVo.ToDTO> to = submitVo.getTo();
+
+        if (ObjectUtils.isNotEmpty(to)) {
+            for (SubmitVo.ToDTO toDTO : to) {
+                EmailMessageSendReceive emailMessageSendReceive = new EmailMessageSendReceive();
+                emailMessageSendReceive.setMessageSendId(messageSendId);
+                emailMessageSendReceive.setType(1);
+                emailMessageSendReceive.setName(toDTO.getName());
+                emailMessageSendReceive.setAddress(toDTO.getAddress());
+                emailMessageSendReceiveList.add(emailMessageSendReceive);
+            }
+        }
+
+        List<SubmitVo.ToDTO> cc = submitVo.getCc();
+        if (ObjectUtils.isNotEmpty(cc)) {
+            for (SubmitVo.ToDTO toDTO : cc) {
+                EmailMessageSendReceive emailMessageSendReceive = new EmailMessageSendReceive();
+                emailMessageSendReceive.setMessageSendId(messageSendId);
+                emailMessageSendReceive.setType(2);
+                emailMessageSendReceive.setName(toDTO.getName());
+                emailMessageSendReceive.setAddress(toDTO.getAddress());
+                emailMessageSendReceiveList.add(emailMessageSendReceive);
+            }
+        }
+
+        List<SubmitVo.ToDTO> bcc = submitVo.getBcc();
+        if (ObjectUtils.isNotEmpty(bcc)) {
+            for (SubmitVo.ToDTO toDTO : bcc) {
+                EmailMessageSendReceive emailMessageSendReceive = new EmailMessageSendReceive();
+                emailMessageSendReceive.setMessageSendId(messageSendId);
+                emailMessageSendReceive.setType(3);
+                emailMessageSendReceive.setName(toDTO.getName());
+                emailMessageSendReceive.setAddress(toDTO.getAddress());
+                emailMessageSendReceiveList.add(emailMessageSendReceive);
+            }
+        }
+
+        List<SubmitVo.ToDTO> replyTo = submitVo.getReplyTo();
+        if (ObjectUtils.isNotEmpty(replyTo)) {
+            for (SubmitVo.ToDTO toDTO : replyTo) {
+                EmailMessageSendReceive emailMessageSendReceive = new EmailMessageSendReceive();
+                emailMessageSendReceive.setMessageSendId(messageSendId);
+                emailMessageSendReceive.setType(4);
+                emailMessageSendReceive.setName(toDTO.getName());
+                emailMessageSendReceive.setAddress(toDTO.getAddress());
+                emailMessageSendReceiveList.add(emailMessageSendReceive);
+            }
+        }
+
+        emailMessageSendReceiveService.saveBatch(emailMessageSendReceiveList);
+    }
+
 }

+ 45 - 0
src/main/java/com/fjhx/vo/SendVo.java

@@ -0,0 +1,45 @@
+package com.fjhx.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SendVo {
+
+    private String name;
+
+    private String email;
+
+    private List<ToDTO> replyTo;
+
+    private List<ToDTO> to;
+
+    private List<ToDTO> cc;
+
+    private List<ToDTO> bcc;
+
+    private String subject;
+
+    private String html;
+
+    private List<Long> attachmentId;
+
+    @Data
+    public static class ToDTO {
+        private String name;
+        private String address;
+    }
+
+    @Data
+    public static class AttachmentsDTO {
+
+        private String filename;
+
+        private String contentType;
+
+        private String content;
+
+    }
+
+}