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 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
8 8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
9 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 11 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
11 12 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
12 13 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
... ... @@ -81,4 +82,11 @@ public class MailAccountController {
81 82 list.sort(Comparator.comparing(MailAccountDO::getId));
82 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 16 @Data
17 17 @EqualsAndHashCode(callSuper = true)
18 18 @Accessors(chain = true)
19   -@ApiModel(value="MailAccount对象", description="")
  19 +@ApiModel(value="MailAccount对象", description="邮箱账号")
20 20 @TableName(value = "system_mail_account", autoResultMap = true)
21 21 public class MailAccountDO extends BaseDO implements Serializable {
22 22  
... ... @@ -37,7 +37,7 @@ public class MailAccountDO extends BaseDO implements Serializable {
37 37 private String host;
38 38  
39 39 @TableField("port")
40   - private String port;
  40 + private Integer port;
41 41  
42 42 @TableField("sslEnable")
43 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 4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
5 5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 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 8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
8 9  
9 10 import java.util.List;
... ... @@ -30,4 +31,6 @@ public interface MailAccountService {
30 31 PageResult<MailAccountDO> getMailAccountPage(MailAccountPageReqVO pageReqVO);
31 32  
32 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 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 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
5 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 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 10 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
8 11 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
  12 +import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
9 13 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
  14 +import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
10 15 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
11 16 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
12 17 import org.springframework.stereotype.Service;
... ... @@ -35,6 +40,9 @@ public class MailAccountServiceImpl implements MailAccountService {
35 40 @Resource
36 41 private MailAccountMapper mailAccountMapper;
37 42  
  43 + @Resource
  44 + private MailTemplateMapper mailTemplateMapper;
  45 +
38 46 @Override
39 47 public Long create(MailAccountCreateReqVO createReqVO) {
40 48 // username 要校验唯一
... ... @@ -81,6 +89,35 @@ public class MailAccountServiceImpl implements MailAccountService {
81 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 121 private void validateMailAccountExists(Long id) {
85 122 if (mailAccountMapper.selectById(id) == null) {
86 123 throw exception(MAIL_ACCOUNT_NOT_EXISTS);
... ...