Commit bd86b89ea53226071a07a0e821d2ad00bea8e028
1 parent
132c8b0e
邮件发送 FIXME部分需要详细说明一下
Showing
5 changed files
with
76 additions
and
2 deletions
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); | ... | ... |