Commit bd86b89ea53226071a07a0e821d2ad00bea8e028

Authored by wangjingyi
1 parent 132c8b0e

邮件发送 FIXME部分需要详细说明一下

yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailAccountController.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccou @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccou
7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO; 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
9 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; 9 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;
  10 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailSendVO;
10 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; 11 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
11 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 12 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
12 import cn.iocoder.yudao.module.system.service.mail.MailAccountService; 13 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
@@ -81,4 +82,11 @@ public class MailAccountController { @@ -81,4 +82,11 @@ public class MailAccountController {
81 list.sort(Comparator.comparing(MailAccountDO::getId)); 82 list.sort(Comparator.comparing(MailAccountDO::getId));
82 return success(MailAccountConvert.INSTANCE.convertList02(list)); 83 return success(MailAccountConvert.INSTANCE.convertList02(list));
83 } 84 }
  85 + @PostMapping("/send")
  86 + @ApiOperation("发送邮件")
  87 + @PreAuthorize("@ss.hasPermission('system:mail-account:send')")
  88 + public CommonResult<Boolean> sendMail(MailSendVO mailSendVO){
  89 + mailAccountService.sendMail(mailSendVO);
  90 + return success(true);
  91 + }
84 } 92 }
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/send/MailSendVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.system.controller.admin.mail.vo.send;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +
  6 +import java.util.List;
  7 +@Data
  8 +public class MailSendVO {
  9 +
  10 + @ApiModelProperty(value = "邮箱" , required = true , example = "yudaoyuanma@123.com")
  11 + private String from;
  12 +
  13 + @ApiModelProperty(value = "标题" , example = "标题")
  14 + private String title;
  15 +
  16 + @ApiModelProperty(value = "内容" , example = "内容")
  17 + private String content;
  18 +
  19 + @ApiModelProperty(value = "收件人" , required = true , example = "yudaoyuanma@123.com")
  20 + private List<String> tos;
  21 +
  22 + @ApiModelProperty(value = "附件" , example = "附件编码")
  23 + private List<String> fileIds;
  24 +
  25 +
  26 +}
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailAccountDO.java
@@ -16,7 +16,7 @@ import lombok.experimental.Accessors; @@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
16 @Data 16 @Data
17 @EqualsAndHashCode(callSuper = true) 17 @EqualsAndHashCode(callSuper = true)
18 @Accessors(chain = true) 18 @Accessors(chain = true)
19 -@ApiModel(value="MailAccount对象", description="") 19 +@ApiModel(value="MailAccount对象", description="邮箱账号")
20 @TableName(value = "system_mail_account", autoResultMap = true) 20 @TableName(value = "system_mail_account", autoResultMap = true)
21 public class MailAccountDO extends BaseDO implements Serializable { 21 public class MailAccountDO extends BaseDO implements Serializable {
22 22
@@ -37,7 +37,7 @@ public class MailAccountDO extends BaseDO implements Serializable { @@ -37,7 +37,7 @@ public class MailAccountDO extends BaseDO implements Serializable {
37 private String host; 37 private String host;
38 38
39 @TableField("port") 39 @TableField("port")
40 - private String port; 40 + private Integer port;
41 41
42 @TableField("sslEnable") 42 @TableField("sslEnable")
43 private Boolean sslEnable; 43 private Boolean sslEnable;
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailAccountService.java
@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO; 4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;
  7 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailSendVO;
7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
8 9
9 import java.util.List; 10 import java.util.List;
@@ -30,4 +31,6 @@ public interface MailAccountService { @@ -30,4 +31,6 @@ public interface MailAccountService {
30 PageResult<MailAccountDO> getMailAccountPage(MailAccountPageReqVO pageReqVO); 31 PageResult<MailAccountDO> getMailAccountPage(MailAccountPageReqVO pageReqVO);
31 32
32 List<MailAccountDO> getMailAccountList(); 33 List<MailAccountDO> getMailAccountList();
  34 +
  35 + void sendMail(MailSendVO mailSendVO);
33 } 36 }
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailAccountServiceImpl.java
1 package cn.iocoder.yudao.module.system.service.mail.impl; 1 package cn.iocoder.yudao.module.system.service.mail.impl;
2 2
  3 +import cn.hutool.extra.mail.MailAccount;
  4 +import cn.hutool.extra.mail.MailUtil;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; 8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;
  9 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailSendVO;
7 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; 10 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 11 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
  12 +import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
9 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper; 13 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
  14 +import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
10 import cn.iocoder.yudao.module.system.service.mail.MailAccountService; 15 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
11 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 16 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
12 import org.springframework.stereotype.Service; 17 import org.springframework.stereotype.Service;
@@ -35,6 +40,9 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -35,6 +40,9 @@ public class MailAccountServiceImpl implements MailAccountService {
35 @Resource 40 @Resource
36 private MailAccountMapper mailAccountMapper; 41 private MailAccountMapper mailAccountMapper;
37 42
  43 + @Resource
  44 + private MailTemplateMapper mailTemplateMapper;
  45 +
38 @Override 46 @Override
39 public Long create(MailAccountCreateReqVO createReqVO) { 47 public Long create(MailAccountCreateReqVO createReqVO) {
40 // username 要校验唯一 48 // username 要校验唯一
@@ -81,6 +89,35 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -81,6 +89,35 @@ public class MailAccountServiceImpl implements MailAccountService {
81 return mailAccountMapper.selectList(); 89 return mailAccountMapper.selectList();
82 } 90 }
83 91
  92 + @Override
  93 + public void sendMail(MailSendVO mailSendVO) {
  94 + // FIXME 查询模版信息 查询模版多条时 使用规则是什么
  95 + List<MailTemplateDO> mailTemplateDOList = mailTemplateMapper.selectList(
  96 + "username",mailSendVO.getFrom()
  97 + );
  98 + //查询账号信息
  99 + MailAccountDO mailAccountDO = mailAccountMapper.selectOne(
  100 + "from",mailSendVO.getFrom()
  101 + );
  102 + // FIXME 模版和邮件内容合成方式未知
  103 + String content = mailSendVO.getContent();
  104 + String templateContent = "";
  105 + // 后续功能 TODO :附件查询
  106 + //List<String> fileIds = mailSendVO.getFileIds();
  107 +
  108 + //装载账号信息
  109 + MailAccount account = new MailAccount();
  110 + account.setHost(mailAccountDO.getHost());
  111 + account.setPort(mailAccountDO.getPort());
  112 + account.setAuth(true);
  113 + account.setFrom(mailAccountDO.getFrom());
  114 + account.setUser(mailAccountDO.getUsername());
  115 + account.setPass(mailAccountDO.getPassword());
  116 + account.setSslEnable(mailAccountDO.getSslEnable());
  117 + //发送
  118 + MailUtil.send(account , mailSendVO.getTos() , mailSendVO.getTitle() , mailSendVO.getContent() , false);
  119 + }
  120 +
84 private void validateMailAccountExists(Long id) { 121 private void validateMailAccountExists(Long id) {
85 if (mailAccountMapper.selectById(id) == null) { 122 if (mailAccountMapper.selectById(id) == null) {
86 throw exception(MAIL_ACCOUNT_NOT_EXISTS); 123 throw exception(MAIL_ACCOUNT_NOT_EXISTS);