From b292bc2c1936d911091d832466744caa87e6c1da Mon Sep 17 00:00:00 2001 From: Danlin Date: Sun, 18 Jan 2026 07:28:25 +0000 Subject: [PATCH] =?UTF-8?q?!233=20=E3=80=90system=E3=80=91=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=82=AE=E4=BB=B6=E6=97=B6=EF=BC=8C=E6=90=BA=E5=B8=A6?= =?UTF-8?q?=E9=99=84=E4=BB=B6=20*=20=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=B8=A6=E4=B8=8A=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/mail/dto/MailSendSingleToUserReqDTO.java | 9 ++++++--- .../module/system/api/mail/MailSendApiImpl.java | 7 +++---- .../system/mq/message/mail/MailSendMessage.java | 9 ++++++--- .../module/system/mq/producer/mail/MailProducer.java | 12 +++++------- .../module/system/service/mail/MailSendService.java | 11 ++++++----- .../system/service/mail/MailSendServiceImpl.java | 10 ++++++---- 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/mail/dto/MailSendSingleToUserReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/mail/dto/MailSendSingleToUserReqDTO.java index 2d67a7808..f5be00c73 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/mail/dto/MailSendSingleToUserReqDTO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/mail/dto/MailSendSingleToUserReqDTO.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.system.api.mail.dto; -import lombok.Data; - import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotNull; +import lombok.Data; +import java.io.File; import java.util.List; import java.util.Map; @@ -36,7 +36,6 @@ public class MailSendSingleToUserReqDTO { */ private List<@Email String> bccMails; - /** * 邮件模板编号 */ @@ -46,5 +45,9 @@ public class MailSendSingleToUserReqDTO { * 邮件模板参数 */ private Map templateParams; + /** + * 附件内容 + */ + private File[] attachments; } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/api/mail/MailSendApiImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/api/mail/MailSendApiImpl.java index 45633a326..c2fa29f74 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/api/mail/MailSendApiImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/api/mail/MailSendApiImpl.java @@ -3,11 +3,10 @@ package cn.iocoder.yudao.module.system.api.mail; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.system.api.mail.dto.MailSendSingleToUserReqDTO; import cn.iocoder.yudao.module.system.service.mail.MailSendService; +import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; -import jakarta.annotation.Resource; - import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @RestController // 提供 RESTful API 接口,给 Feign 调用 @@ -21,14 +20,14 @@ public class MailSendApiImpl implements MailSendApi { public CommonResult sendSingleMailToAdmin(MailSendSingleToUserReqDTO reqDTO) { return success(mailSendService.sendSingleMailToAdmin(reqDTO.getUserId(), reqDTO.getToMails(), reqDTO.getCcMails(), reqDTO.getBccMails(), - reqDTO.getTemplateCode(), reqDTO.getTemplateParams())); + reqDTO.getTemplateCode(), reqDTO.getTemplateParams(), reqDTO.getAttachments())); } @Override public CommonResult sendSingleMailToMember(MailSendSingleToUserReqDTO reqDTO) { return success(mailSendService.sendSingleMailToMember(reqDTO.getUserId(), reqDTO.getToMails(), reqDTO.getCcMails(), reqDTO.getBccMails(), - reqDTO.getTemplateCode(), reqDTO.getTemplateParams())); + reqDTO.getTemplateCode(), reqDTO.getTemplateParams(), reqDTO.getAttachments())); } } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/MailSendMessage.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/MailSendMessage.java index 03a4b7f19..4bd87fde5 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/MailSendMessage.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/MailSendMessage.java @@ -1,12 +1,11 @@ package cn.iocoder.yudao.module.system.mq.message.mail; -import lombok.Data; - import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import lombok.Data; +import java.io.File; import java.util.Collection; -import java.util.List; /** * 邮箱发送消息 @@ -54,5 +53,9 @@ public class MailSendMessage { */ @NotEmpty(message = "邮件内容不能为空") private String content; + /** + * 邮件附件 + */ + private File[] attachments; } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/producer/mail/MailProducer.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/producer/mail/MailProducer.java index 07aabb00a..7616f2c07 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/producer/mail/MailProducer.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/mq/producer/mail/MailProducer.java @@ -1,16 +1,13 @@ package cn.iocoder.yudao.module.system.mq.producer.mail; import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; -import jakarta.annotation.Resource; - +import java.io.File; import java.util.Collection; -import java.util.List; - -import static java.util.Collections.singletonList; /** * Mail 邮件相关消息的 Producer @@ -39,12 +36,13 @@ public class MailProducer { */ public void sendMailSendMessage(Long sendLogId, Collection toMails, Collection ccMails, Collection bccMails, - Long accountId, String nickname, String title, String content) { + Long accountId, String nickname, String title, String content, File[] attachments) { MailSendMessage message = new MailSendMessage() .setLogId(sendLogId) .setToMails(toMails).setCcMails(ccMails).setBccMails(bccMails) .setAccountId(accountId).setNickname(nickname) - .setTitle(title).setContent(content); + .setTitle(title).setContent(content) + .setAttachments(attachments); applicationContext.publishEvent(message); } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendService.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendService.java index 1b600bc90..9863a4f43 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendService.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.mail; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; +import java.io.File; import java.util.Collection; import java.util.Map; @@ -27,9 +28,9 @@ public interface MailSendService { */ default Long sendSingleMailToAdmin(Long userId, Collection toMails, Collection ccMails, Collection bccMails, - String templateCode, Map templateParams) { + String templateCode, Map templateParams, File... attachments) { return sendSingleMail(toMails, ccMails, bccMails, userId, UserTypeEnum.ADMIN.getValue(), - templateCode, templateParams); + templateCode, templateParams, attachments); } /** @@ -45,9 +46,9 @@ public interface MailSendService { */ default Long sendSingleMailToMember(Long userId, Collection toMails, Collection ccMails, Collection bccMails, - String templateCode, Map templateParams) { + String templateCode, Map templateParams, File... attachments) { return sendSingleMail(toMails, ccMails, bccMails, userId, UserTypeEnum.MEMBER.getValue(), - templateCode, templateParams); + templateCode, templateParams, attachments); } /** @@ -64,7 +65,7 @@ public interface MailSendService { */ Long sendSingleMail(Collection toMails, Collection ccMails, Collection bccMails, Long userId, Integer userType, - String templateCode, Map templateParams); + String templateCode, Map templateParams, File... attachments); /** * 执行真正的邮件发送 diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java index 682696f93..8a728eb81 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java @@ -20,6 +20,7 @@ import org.dromara.hutool.extra.mail.MailUtil; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.io.File; import java.util.Collection; import java.util.LinkedHashSet; import java.util.Map; @@ -56,7 +57,8 @@ public class MailSendServiceImpl implements MailSendService { @Override public Long sendSingleMail(Collection toMails, Collection ccMails, Collection bccMails, Long userId, Integer userType, - String templateCode, Map templateParams) { + String templateCode, Map templateParams, + File... attachments) { // 1.1 校验邮箱模版是否合法 MailTemplateDO template = validateMailTemplate(templateCode); // 1.2 校验邮箱账号是否合法 @@ -94,7 +96,7 @@ public class MailSendServiceImpl implements MailSendService { // 发送 MQ 消息,异步执行发送短信 if (isSend) { mailProducer.sendMailSendMessage(sendLogId, toMailSet, ccMailSet, bccMailSet, - account.getId(), template.getNickname(), title, content); + account.getId(), template.getNickname(), title, content, attachments); } return sendLogId; } @@ -119,11 +121,11 @@ public class MailSendServiceImpl implements MailSendService { public void doSendMail(MailSendMessage message) { // 1. 创建发送账号 MailAccountDO account = validateMailAccount(message.getAccountId()); - MailAccount mailAccount = buildMailAccount(account, message.getNickname()); + MailAccount mailAccount = buildMailAccount(account, message.getNickname()); // 2. 发送邮件 try { String messageId = MailUtil.send(mailAccount, message.getToMails(), message.getCcMails(), message.getBccMails(), - message.getTitle(), message.getContent(), true); + message.getTitle(), message.getContent(), true, message.getAttachments()); // 3. 更新结果(成功) mailLogService.updateMailSendResult(message.getLogId(), messageId, null); } catch (Exception e) {