- 添加Email测试类
This commit is contained in:
LingandRX 2025-06-04 21:01:15 +08:00
parent acf4c56b2b
commit 6f7057ba06
7 changed files with 198 additions and 10 deletions

View File

@ -28,7 +28,6 @@
</scm> </scm>
<properties> <properties>
<java.version>17</java.version> <java.version>17</java.version>
<mail.version>1.6.2</mail.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
@ -59,8 +58,8 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sun.mail</groupId> <groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId> <artifactId>jakarta.mail</artifactId>
<version>${mail.version}</version> <version>2.0.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -1,6 +1,6 @@
package asia.yulinling.workflow.service; package asia.yulinling.workflow.service;
import javax.mail.MessagingException; import jakarta.mail.MessagingException;
/** /**
* <p> * <p>
@ -46,14 +46,15 @@ public interface MailService {
void sendAttachmentsMail(String to, String subject, String content, String filePath, String... cc) throws MessagingException; void sendAttachmentsMail(String to, String subject, String content, String filePath, String... cc) throws MessagingException;
/** /**
* 发送带附件邮件 * 发送正文带静态资源的邮件
* *
* @param to 收件人地址 * @param to 收件人地址
* @param subject 邮件主题 * @param subject 邮件主题
* @param content 邮件内容 * @param content 邮件内容
* @param rscPath 静态资源地址 * @param rscPath 静态资源地址
* @param rscId 静态资源id
* @param cc 抄送地址 * @param cc 抄送地址
* @throws MessagingException 邮件发送异常 * @throws MessagingException 邮件发送异常
*/ */
void sendResourceMail(String to, String subject, String content, String rscPath, String... cc) throws MessagingException; void sendResourceMail(String to, String subject, String content, String rscPath, String rscId, String... cc) throws MessagingException;
} }

View File

@ -4,11 +4,15 @@ import asia.yulinling.workflow.service.MailService;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.mail.MessagingException; import jakarta.mail.internet.MimeMessage;
import jakarta.mail.MessagingException;
import java.io.File;
/** /**
* <p> * <p>
@ -36,6 +40,7 @@ public class MailServiceImpl implements MailService {
@Override @Override
public void sendSimpleMail(String to, String subject, String content, String... cc) { public void sendSimpleMail(String to, String subject, String content, String... cc) {
SimpleMailMessage message = new SimpleMailMessage(); SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from); message.setFrom(from);
message.setTo(to); message.setTo(to);
message.setSubject(subject); message.setSubject(subject);
@ -43,6 +48,7 @@ public class MailServiceImpl implements MailService {
if (ArrayUtil.isNotEmpty(cc)) { if (ArrayUtil.isNotEmpty(cc)) {
message.setCc(cc); message.setCc(cc);
} }
mailSender.send(message); mailSender.send(message);
} }
@ -57,7 +63,18 @@ public class MailServiceImpl implements MailService {
*/ */
@Override @Override
public void sendHtmlMail(String to, String subject, String content, String... cc) throws MessagingException { public void sendHtmlMail(String to, String subject, String content, String... cc) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
if (ArrayUtil.isNotEmpty(cc)) {
helper.setCc(cc);
}
mailSender.send(message);
} }
/** /**
@ -72,21 +89,47 @@ public class MailServiceImpl implements MailService {
*/ */
@Override @Override
public void sendAttachmentsMail(String to, String subject, String content, String filePath, String... cc) throws MessagingException { public void sendAttachmentsMail(String to, String subject, String content, String filePath, String... cc) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
if (ArrayUtil.isNotEmpty(cc)) {
helper.setCc(cc);
}
FileSystemResource file = new FileSystemResource(new File(filePath));
helper.addAttachment(file.getFilename(), file);
mailSender.send(message);
} }
/** /**
* 发送带附件邮件 * 发送正文带静态资源的邮件
* *
* @param to 收件人地址 * @param to 收件人地址
* @param subject 邮件主题 * @param subject 邮件主题
* @param content 邮件内容 * @param content 邮件内容
* @param rscPath 静态资源地址 * @param rscPath 静态资源地址
* @param rscId 静态资源id
* @param cc 抄送地址 * @param cc 抄送地址
* @throws MessagingException 邮件发送异常 * @throws MessagingException 邮件发送异常
*/ */
@Override public void sendResourceMail(String to, String subject, String content, String rscPath, String rscId, String... cc) throws MessagingException {
public void sendResourceMail(String to, String subject, String content, String rscPath, String... cc) throws MessagingException { MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
if (ArrayUtil.isNotEmpty(cc)) {
helper.setCc(cc);
}
FileSystemResource file = new FileSystemResource(new File(rscPath));
helper.addAttachment(rscId, file);
mailSender.send(message);
} }
} }

View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Test Title</title>
</head>
<body>
<div id="welcome">
<h3>
欢迎使用 TEST HTML
<span th:text="${project}">- Powered By <span th:text="${author}"></span></span>
</h3>
<span style="text-align: center; padding: 10px">
<a style="text-decoration: none" href="#" th:href="@{${url}}" target="_blank">
<strong>Spring Boot入门首选</strong>
</a>
</span>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="welcome">
<h3>
欢迎使用
<span th:text="${project}">- Powered By <span th:text="${author}"></span></span>
</h3>
<span style="text-align: center; padding: 10px">
<a style="text-decoration: none" href="#" th:href="@{${url}}" target="_blank">
<strong>Spring Boot入门首选</strong>
</a>
</span>
</div>
</body>
</html>

View File

@ -0,0 +1,101 @@
package asia.yulinling.workflow.service;
import asia.yulinling.workflow.WorkFlowMainTests;
import cn.hutool.core.io.resource.ResourceUtil;
import jakarta.mail.MessagingException;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.thymeleaf.context.Context;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
import java.net.URL;
/**
* <p>
* 邮件测试
* </p>
*
* @author yulinling
* @date 2025/6/4
*/
public class EmailServiceTest extends WorkFlowMainTests {
@Autowired
private MailService mailService;
@Autowired
private TemplateEngine templateEngine;
@Autowired
private ApplicationContext applicationContext;
/**
* 测试简单邮件
*/
@Test
public void sendSimpleMail() {
mailService.sendSimpleMail("rsgltzyd@hotmail.com", "test", "test content");
}
/**
* 测试发送HTML邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendHtmlMail() throws MessagingException {
Context context = new Context();
context.setVariable("project", "mail test");
context.setVariable("author", "yulinlng");
context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
String emailTemplate = templateEngine.process("welcome", context);
mailService.sendHtmlMail("rsgltzyd@hotmail.com", "test", emailTemplate);
}
/**
* 测试自定义模板HTML邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendHtmlMail2() throws MessagingException {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setCacheable(false);
resolver.setPrefix("classpath:/email/");
resolver.setSuffix(".html");
templateEngine.setTemplateResolver(resolver);
Context context = new Context();
context.setVariable("project", "mail test");
context.setVariable("author", "yulinlng");
context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
String emailTemplate = templateEngine.process("test", context);
mailService.sendHtmlMail("rsgltzyd@hotmail.com", "test", emailTemplate);
}
/**
* 测试附件邮件
*
* @throws MessagingException
*/
@Test
public void sendAttachmentsMail() throws MessagingException {
URL resource = ResourceUtil.getResource("static/GitHub.ico");
mailService.sendAttachmentsMail("rsgltzyd@hotmail.com", "test", "邮件中有附件,请注意查收", resource.getPath());
}
@Test
public void sendResourceMail() throws MessagingException {
String rscId = "rscId";
String content = "<html><body><img src=\"cid:rscId\"></body></html>";
URL resource = ResourceUtil.getResource("static/GitHub.ico");
mailService.sendResourceMail("rsgltzyd@hotmail.com", "test", content, resource.getPath(), rscId);
}
}