From c2e3ca063c99d0492ec346f21c6ac88b28ec16e9 Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Tue, 22 Jul 2025 15:40:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hzya/frame/email/EmailUtil.java | 72 +++++++++++++++++++ .../controler/EntranceController.java | 22 +++++- 2 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 base-common/src/main/java/com/hzya/frame/email/EmailUtil.java diff --git a/base-common/src/main/java/com/hzya/frame/email/EmailUtil.java b/base-common/src/main/java/com/hzya/frame/email/EmailUtil.java new file mode 100644 index 00000000..18f3388d --- /dev/null +++ b/base-common/src/main/java/com/hzya/frame/email/EmailUtil.java @@ -0,0 +1,72 @@ +package com.hzya.frame.email; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeUtility; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** + * @ClassName EmailUtil + * @Description + * @Author llg + * Date 2025/7/1 3:28 下午 + */ +@Service +public class EmailUtil { + @Value("${spring.mail.username}") + private String sendEmail ; + @Resource + private JavaMailSender mailSender; + + public void sendHtmlMessage(String to, String subject, String htmlContent) throws MessagingException { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, true); + helper.setFrom(sendEmail); + helper.setTo(to); + helper.setSubject(subject); + helper.setText(htmlContent, true); // 第二个参数设为true表示启用HTML格式 + mailSender.send(message); + } + public void sendHtmlAndFileMessage(String to, String subject, String htmlContent, List attachments) throws MessagingException, UnsupportedEncodingException { + MimeMessage message = mailSender.createMimeMessage(); + // 使用MimeMessageHelper的构造函数设置multipart模式为true,并指定编码 + MimeMessageHelper helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name()); + helper.setFrom(sendEmail); + helper.setTo(to); + helper.setSubject(subject); + helper.setText(htmlContent, true); // 启用HTML格式 + + // 处理附件 + if (attachments != null && attachments.size() > 0) { + for (int i = 0; i < attachments.size(); i++) { + if (!attachments.get(i).isEmpty()) { + // 使用MimeUtility.encodeWord解决中文附件名乱码问题 + String encodedFileName = MimeUtility.encodeWord(attachments.get(i).getOriginalFilename()); + helper.addAttachment(encodedFileName, attachments.get(i)); + } + } + } + + mailSender.send(message); + } + public void sendSimpleMessage(String to, String subject, String text) { + SimpleMailMessage message = new SimpleMailMessage(); + message.setFrom(sendEmail); + message.setTo(to); + message.setSubject(subject); + message.setText(text); + mailSender.send(message); + } + +} diff --git a/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java b/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java index a3520c35..56fc2397 100644 --- a/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java +++ b/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java @@ -22,14 +22,19 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; /** * @Content程序唯一入口controller @@ -239,11 +244,22 @@ public class EntranceController { // "测试邮件简单", // "这是一封来自Spring Boot的测试邮件" //); - + String filePath = "/Users/apple/Desktop/【C4协同费控产品】(报表相关)字典说明zm@2025.pdf"; + File file = new File(filePath); + List attachments = new ArrayList<>(); + try (FileInputStream input = new FileInputStream(file)) { + MultipartFile multipartFile = new MockMultipartFile( + file.getName(), // 对应表单中的文件字段名 + file.getName(), // 原始文件名 + "application/pdf", // 或根据文件类型指定 MIME 类型 + input + ); + attachments.add(multipartFile); + } String htmls = "

任务列表

问题标题详细描述预计完成时间
共享结算备注结算单备注字段赋值2025年7月2日
流水状态展示调整1、流水匹配界面,明细行匹配状态 调整为已推送
2、查询条件 已推送明源 调整为已推送
2025年7月3日
共享单据挂起后,银行流水对账界面客商有误2025年7月4日
单据在审核中心 详细信息默认不自动带出审批界面表体明细数据未自动展开2025年7月4日
单据传输失败后,ncc 有自由状态的单子通过接口对接NC单据,附件上传失败后,单据未删除2025年7月3日
对接审核状态更新优化共享审批,取消审批,共享审核,共享复核,驳回状态回传简道云2025年7月10日
"; - emailUtil.sendHtmlMessage("number8912@qq.com", + emailUtil.sendHtmlAndFileMessage("number8912@qq.com", "测试邮件html", - htmls); + htmls,attachments); return BaseResult.getSuccessMessageEntity("成功"); }