!233 【system】发送邮件时,携带附件

* 发送邮件时,带上附件
master
Danlin 3 weeks ago committed by 芋道源码
parent 72c0c013a0
commit b292bc2c19

@ -1,10 +1,10 @@
package cn.iocoder.yudao.module.system.api.mail.dto; package cn.iocoder.yudao.module.system.api.mail.dto;
import lombok.Data;
import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.File;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -36,7 +36,6 @@ public class MailSendSingleToUserReqDTO {
*/ */
private List<@Email String> bccMails; private List<@Email String> bccMails;
/** /**
* *
*/ */
@ -46,5 +45,9 @@ public class MailSendSingleToUserReqDTO {
* *
*/ */
private Map<String, Object> templateParams; private Map<String, Object> templateParams;
/**
*
*/
private File[] attachments;
} }

@ -3,11 +3,10 @@ package cn.iocoder.yudao.module.system.api.mail;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.system.api.mail.dto.MailSendSingleToUserReqDTO; import cn.iocoder.yudao.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
import cn.iocoder.yudao.module.system.service.mail.MailSendService; import cn.iocoder.yudao.module.system.service.mail.MailSendService;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import jakarta.annotation.Resource;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@RestController // 提供 RESTful API 接口,给 Feign 调用 @RestController // 提供 RESTful API 接口,给 Feign 调用
@ -21,14 +20,14 @@ public class MailSendApiImpl implements MailSendApi {
public CommonResult<Long> sendSingleMailToAdmin(MailSendSingleToUserReqDTO reqDTO) { public CommonResult<Long> sendSingleMailToAdmin(MailSendSingleToUserReqDTO reqDTO) {
return success(mailSendService.sendSingleMailToAdmin(reqDTO.getUserId(), return success(mailSendService.sendSingleMailToAdmin(reqDTO.getUserId(),
reqDTO.getToMails(), reqDTO.getCcMails(), reqDTO.getBccMails(), reqDTO.getToMails(), reqDTO.getCcMails(), reqDTO.getBccMails(),
reqDTO.getTemplateCode(), reqDTO.getTemplateParams())); reqDTO.getTemplateCode(), reqDTO.getTemplateParams(), reqDTO.getAttachments()));
} }
@Override @Override
public CommonResult<Long> sendSingleMailToMember(MailSendSingleToUserReqDTO reqDTO) { public CommonResult<Long> sendSingleMailToMember(MailSendSingleToUserReqDTO reqDTO) {
return success(mailSendService.sendSingleMailToMember(reqDTO.getUserId(), return success(mailSendService.sendSingleMailToMember(reqDTO.getUserId(),
reqDTO.getToMails(), reqDTO.getCcMails(), reqDTO.getBccMails(), reqDTO.getToMails(), reqDTO.getCcMails(), reqDTO.getBccMails(),
reqDTO.getTemplateCode(), reqDTO.getTemplateParams())); reqDTO.getTemplateCode(), reqDTO.getTemplateParams(), reqDTO.getAttachments()));
} }
} }

@ -1,12 +1,11 @@
package cn.iocoder.yudao.module.system.mq.message.mail; package cn.iocoder.yudao.module.system.mq.message.mail;
import lombok.Data;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.List;
/** /**
* *
@ -54,5 +53,9 @@ public class MailSendMessage {
*/ */
@NotEmpty(message = "邮件内容不能为空") @NotEmpty(message = "邮件内容不能为空")
private String content; private String content;
/**
*
*/
private File[] attachments;
} }

@ -1,16 +1,13 @@
package cn.iocoder.yudao.module.system.mq.producer.mail; package cn.iocoder.yudao.module.system.mq.producer.mail;
import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import jakarta.annotation.Resource; import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import static java.util.Collections.singletonList;
/** /**
* Mail Producer * Mail Producer
@ -39,12 +36,13 @@ public class MailProducer {
*/ */
public void sendMailSendMessage(Long sendLogId, public void sendMailSendMessage(Long sendLogId,
Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails, Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails,
Long accountId, String nickname, String title, String content) { Long accountId, String nickname, String title, String content, File[] attachments) {
MailSendMessage message = new MailSendMessage() MailSendMessage message = new MailSendMessage()
.setLogId(sendLogId) .setLogId(sendLogId)
.setToMails(toMails).setCcMails(ccMails).setBccMails(bccMails) .setToMails(toMails).setCcMails(ccMails).setBccMails(bccMails)
.setAccountId(accountId).setNickname(nickname) .setAccountId(accountId).setNickname(nickname)
.setTitle(title).setContent(content); .setTitle(title).setContent(content)
.setAttachments(attachments);
applicationContext.publishEvent(message); applicationContext.publishEvent(message);
} }

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.mail;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage;
import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
@ -27,9 +28,9 @@ public interface MailSendService {
*/ */
default Long sendSingleMailToAdmin(Long userId, default Long sendSingleMailToAdmin(Long userId,
Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails, Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails,
String templateCode, Map<String, Object> templateParams) { String templateCode, Map<String, Object> templateParams, File... attachments) {
return sendSingleMail(toMails, ccMails, bccMails, userId, UserTypeEnum.ADMIN.getValue(), 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, default Long sendSingleMailToMember(Long userId,
Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails, Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails,
String templateCode, Map<String, Object> templateParams) { String templateCode, Map<String, Object> templateParams, File... attachments) {
return sendSingleMail(toMails, ccMails, bccMails, userId, UserTypeEnum.MEMBER.getValue(), return sendSingleMail(toMails, ccMails, bccMails, userId, UserTypeEnum.MEMBER.getValue(),
templateCode, templateParams); templateCode, templateParams, attachments);
} }
/** /**
@ -64,7 +65,7 @@ public interface MailSendService {
*/ */
Long sendSingleMail(Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails, Long sendSingleMail(Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails,
Long userId, Integer userType, Long userId, Integer userType,
String templateCode, Map<String, Object> templateParams); String templateCode, Map<String, Object> templateParams, File... attachments);
/** /**
* *

@ -20,6 +20,7 @@ import org.dromara.hutool.extra.mail.MailUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Map; import java.util.Map;
@ -56,7 +57,8 @@ public class MailSendServiceImpl implements MailSendService {
@Override @Override
public Long sendSingleMail(Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails, public Long sendSingleMail(Collection<String> toMails, Collection<String> ccMails, Collection<String> bccMails,
Long userId, Integer userType, Long userId, Integer userType,
String templateCode, Map<String, Object> templateParams) { String templateCode, Map<String, Object> templateParams,
File... attachments) {
// 1.1 校验邮箱模版是否合法 // 1.1 校验邮箱模版是否合法
MailTemplateDO template = validateMailTemplate(templateCode); MailTemplateDO template = validateMailTemplate(templateCode);
// 1.2 校验邮箱账号是否合法 // 1.2 校验邮箱账号是否合法
@ -94,7 +96,7 @@ public class MailSendServiceImpl implements MailSendService {
// 发送 MQ 消息,异步执行发送短信 // 发送 MQ 消息,异步执行发送短信
if (isSend) { if (isSend) {
mailProducer.sendMailSendMessage(sendLogId, toMailSet, ccMailSet, bccMailSet, mailProducer.sendMailSendMessage(sendLogId, toMailSet, ccMailSet, bccMailSet,
account.getId(), template.getNickname(), title, content); account.getId(), template.getNickname(), title, content, attachments);
} }
return sendLogId; return sendLogId;
} }
@ -119,11 +121,11 @@ public class MailSendServiceImpl implements MailSendService {
public void doSendMail(MailSendMessage message) { public void doSendMail(MailSendMessage message) {
// 1. 创建发送账号 // 1. 创建发送账号
MailAccountDO account = validateMailAccount(message.getAccountId()); MailAccountDO account = validateMailAccount(message.getAccountId());
MailAccount mailAccount = buildMailAccount(account, message.getNickname()); MailAccount mailAccount = buildMailAccount(account, message.getNickname());
// 2. 发送邮件 // 2. 发送邮件
try { try {
String messageId = MailUtil.send(mailAccount, message.getToMails(), message.getCcMails(), message.getBccMails(), String messageId = MailUtil.send(mailAccount, message.getToMails(), message.getCcMails(), message.getBccMails(),
message.getTitle(), message.getContent(), true); message.getTitle(), message.getContent(), true, message.getAttachments());
// 3. 更新结果(成功) // 3. 更新结果(成功)
mailLogService.updateMailSendResult(message.getLogId(), messageId, null); mailLogService.updateMailSendResult(message.getLogId(), messageId, null);
} catch (Exception e) { } catch (Exception e) {

Loading…
Cancel
Save