From c76a8639baab1f082c78ca4415cbdd8526c825ad Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Fri, 15 Apr 2022 14:14:51 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=87=AA=E5=AE=9A=E4=B9=89=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=82=AE=E4=BB=B6=E6=B7=BB=E5=8A=A0=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/auth/aop/LoginAspect.java | 4 +- .../src/views/business/tools/mail/send.vue | 66 +++++++++++++++---- xjs-business/xjs-business-warning/pom.xml | 12 ++++ .../com/xjs/controller/MailController.java | 5 +- .../java/com/xjs/domain/mall/MailBean.java | 8 +++ .../main/java/com/xjs/domain/mall/MailVo.java | 40 +++-------- .../main/java/com/xjs/server/MailServer.java | 34 +++++++--- 7 files changed, 112 insertions(+), 57 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/aop/LoginAspect.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/aop/LoginAspect.java index 10041081..26f19988 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/aop/LoginAspect.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/aop/LoginAspect.java @@ -1,5 +1,6 @@ package com.ruoyi.auth.aop; +import cn.hutool.core.date.DateUtil; import com.ruoyi.system.api.model.LoginUser; import com.xjs.business.warning.RemoteMailFeign; import com.xjs.business.warning.domain.MailBean; @@ -49,7 +50,8 @@ public class LoginAspect { mailBean.setRecipient(loginUser.getSysUser().getEmail()); mailBean.setContent("

" + loginUser.getSysUser().getNickName() + "上线啦

" + "\"头像\"" + - "

当前IP地址:" + loginUser.getSysUser().getLoginIp() + "

"); + "

当前IP地址:" + loginUser.getSysUser().getLoginIp() + "

" + + "

上线时间:"+ DateUtil.now() +"

"); remoteMailFeign.sendMailForRPC(mailBean); } diff --git a/ruoyi-ui/src/views/business/tools/mail/send.vue b/ruoyi-ui/src/views/business/tools/mail/send.vue index 33505630..3a221aff 100644 --- a/ruoyi-ui/src/views/business/tools/mail/send.vue +++ b/ruoyi-ui/src/views/business/tools/mail/send.vue @@ -32,6 +32,22 @@ + + + + 添加附件 + + + + @@ -70,8 +86,7 @@ export default { recipient: undefined, recipientSuffix: undefined, content: undefined, - - + file:[] }, rules: { @@ -94,6 +109,8 @@ export default { ] }, + fileList: [], + } }, @@ -111,25 +128,50 @@ export default { this.$refs['elForm'].validate(valid => { if (!valid) return - let data = { - subject: this.formData.subject, - recipient: this.formData.recipient + this.formData.recipientSuffix, - content: this.formData.content + let formData = new FormData(); + let files = this.formData.file; + for (let i = 0; i < files.length; i++) { + formData.append("fileList", files[i]); } - this.$modal.loading("请稍后...") - sendMail(data).then(res => { + formData.append("subject", this.formData.subject); + formData.append("content", this.formData.content); + formData.append("recipient", this.formData.recipient + this.formData.recipientSuffix); + + this.$modal.loading("正在发送,请稍后...") + sendMail(formData).then(res => { this.$modal.notifySuccess("发送成功") this.$modal.closeLoading() - this.formData.subject="" - this.formData.recipient="" - this.formData.recipientSuffix="" - }).catch(err =>{ + this.formData.subject = "" + this.formData.recipient = "" + this.formData.recipientSuffix = "" + }).catch(err => { this.$modal.closeLoading() }) }) }, + + addFile() { + + }, + + //上传文件之前 + beforeUpload(file) { + console.log(file) + this.formData.file.push(file) + }, + + //删除文件之前 + beforeRemove(file) { + let fileList =this.formData.file + for (let i = 0; i < fileList.length; i++) { + if (fileList[i].uid===file.uid) { + fileList.splice(i,1) + } + } + }, + } } diff --git a/xjs-business/xjs-business-warning/pom.xml b/xjs-business/xjs-business-warning/pom.xml index 77c05298..2c0c555c 100644 --- a/xjs-business/xjs-business-warning/pom.xml +++ b/xjs-business/xjs-business-warning/pom.xml @@ -9,6 +9,18 @@ 4.0.0 业务模块-预警模块 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + + + xjs-business-warning diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/MailController.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/MailController.java index feacaf93..25c40135 100644 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/MailController.java +++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/MailController.java @@ -31,10 +31,11 @@ public class MailController { @PostMapping("send-mail") @ApiOperation("发送邮件") @Log(title = "发送邮件", businessType = BusinessType.INSERT) - public AjaxResult sendMail(@RequestBody MailVo mailVo) { + public AjaxResult sendMail(MailVo mailVo) { MailBean mailBean = new MailBean(); BeanUtils.copyProperties(mailVo, mailBean); - mailBean.setMailType(MailBean.MailType.HTML); + mailBean.setMailType(MailBean.MailType.ATTACHMENT); + mailService.sendMail(mailBean); return AjaxResult.success(); } diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailBean.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailBean.java index bbd48f32..708c53d2 100644 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailBean.java +++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailBean.java @@ -1,6 +1,7 @@ package com.xjs.domain.mall; import lombok.Data; +import org.springframework.web.multipart.MultipartFile; import java.io.Serializable; @@ -38,6 +39,13 @@ public class MailBean implements Serializable { */ private String absolutePath; + /** + * 文件列表 + */ + private MultipartFile[] fileList; + + + /** * 邮件发送类型 */ diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailVo.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailVo.java index a6ca329a..e5ec1128 100644 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailVo.java +++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/domain/mall/MailVo.java @@ -1,5 +1,8 @@ package com.xjs.domain.mall; +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + import java.io.Serializable; /** @@ -7,7 +10,7 @@ import java.io.Serializable; * @author xiejs * @since 2022-04-14 */ - +@Data public class MailVo implements Serializable { private static final long serialVersionUID = -1L; @@ -24,36 +27,9 @@ public class MailVo implements Serializable { */ private String content; - @Override - public String toString() { - return "MailVo{" + - "recipient='" + recipient + '\'' + - ", subject='" + subject + '\'' + - ", content='" + content + '\'' + - '}'; - } - - public String getRecipient() { - return recipient; - } - - public void setRecipient(String recipient) { - this.recipient = recipient; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } - - public String getContent() { - return content; - } + /** + * 文件列表 + */ + private MultipartFile[] fileList; - public void setContent(String content) { - this.content = content; - } } diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java index f8170ca9..6058d4fb 100644 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java +++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java @@ -6,11 +6,13 @@ import com.xjs.domain.mall.MailBean; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; @@ -18,6 +20,9 @@ import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; import java.util.concurrent.TimeUnit; import static com.xjs.consts.RedisConst.MAIL_STATUS; @@ -131,7 +136,7 @@ public class MailServer { * * @param mailBean 邮箱实体 */ - private void sendAttachmentMail(MailBean mailBean) throws MessagingException { + private void sendAttachmentMail(MailBean mailBean) throws MessagingException, IOException { MimeMessage mimeMailMessage = null; try { mimeMailMessage = javaMailSender.createMimeMessage(); @@ -140,15 +145,24 @@ public class MailServer { mimeMessageHelper.setFrom(MAIL_SENDER); mimeMessageHelper.setTo(mailBean.getRecipient()); mimeMessageHelper.setSubject(mailBean.getSubject()); - mimeMessageHelper.setText(mailBean.getContent()); - //文件路径 目前写死在代码中,之后可以当参数传过来,或者在MailBean中添加属性absolutePath - FileSystemResource file = new FileSystemResource(new File(mailBean.getAbsolutePath())); - //FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/email.png")); - String fileName = mailBean.getAbsolutePath().substring(mailBean.getAbsolutePath().lastIndexOf(File.separator)); - //添加附件,第一个参数表示添加到 Email 中附件的名称,第二个参数是图片资源 - mimeMessageHelper.addAttachment(fileName, file); - //多个附件 - //mimeMessageHelper.addAttachment(fileName1, file1); + mimeMessageHelper.setText(mailBean.getContent(), true); + + //发送附件 + if (mailBean.getFileList() != null && mailBean.getFileList().length > 0) { + for (MultipartFile multipartFile : mailBean.getFileList()) { + InputStream inputStream = null; + try { + inputStream = multipartFile.getInputStream(); + byte[] bytes = inputStream.readAllBytes(); + ByteArrayResource bar = new ByteArrayResource(bytes); + mimeMessageHelper.addAttachment(Objects.requireNonNull(multipartFile.getOriginalFilename()), bar); + } finally { + if (inputStream != null) { + inputStream.close(); + } + } + } + } javaMailSender.send(mimeMailMessage); } catch (Exception e) {