mirror of
https://github.com/ityouknow/spring-boot-examples.git
synced 2026-09-03 07:27:38 +08:00
add Spring Boot 3.0 mail examples
This commit is contained in:
@@ -35,7 +35,7 @@ Spring Boot 使用的各种示例,以最简单、最实用为标准,此开
|
||||
- [spring-boot-mybatis](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mybatis):Spring Boot 3.0 Mybatis 注解、xml 使用、多数据源使用示例
|
||||
- [spring-boot-rabbitmq](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-rabbitmq):Spring Boot 3.0 RabbitMQ 各种常见场景使用示例
|
||||
- [spring-boot-scheduler](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-scheduler):Spring Boot 3.0 定时任务 scheduler 使用示例
|
||||
---
|
||||
- [spring-boot-mail](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mail):Spring Boot 3.0 邮件发送使用示例
|
||||
|
||||
> 如果大家想了解关于 Spring Boot 的其它方面应用,也可以以[issues](https://github.com/ityouknow/spring-boot-examples/issues)的形式反馈给我,我后续来完善。
|
||||
|
||||
|
||||
75
spring-boot-mail/pom.xml
Normal file
75
spring-boot-mail/pom.xml
Normal file
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.neo</groupId>
|
||||
<artifactId>spring-boot-mail</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>spring-boot-mail</name>
|
||||
<description>Demo project for Spring Boot and mail</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context-support</artifactId>
|
||||
<version>RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>RELEASE</version>
|
||||
</dependency>
|
||||
<!-- 模板引擎 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.hamcrest</groupId>
|
||||
<artifactId>hamcrest-core</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<fork>true</fork>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
12
spring-boot-mail/src/main/java/com/neo/MailApplication.java
Normal file
12
spring-boot-mail/src/main/java/com/neo/MailApplication.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package com.neo;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class MailApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(MailApplication.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.neo.service;
|
||||
|
||||
/**
|
||||
* Created by summer on 2017/5/4.
|
||||
*/
|
||||
public interface MailService {
|
||||
|
||||
void sendSimpleMail(String to, String subject, String content);
|
||||
|
||||
void sendHtmlMail(String to, String subject, String content);
|
||||
|
||||
void sendAttachmentsMail(String to, String subject, String content, String filePath);
|
||||
|
||||
void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
package com.neo.service.impl;
|
||||
|
||||
import com.neo.service.MailService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
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 jakarta.mail.MessagingException;
|
||||
import jakarta.mail.internet.MimeMessage;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Created by summer on 2017/5/4.
|
||||
*/
|
||||
@Component
|
||||
public class MailServiceImpl implements MailService{
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
private JavaMailSender mailSender;
|
||||
|
||||
@Value("${mail.fromMail.addr}")
|
||||
private String from;
|
||||
|
||||
/**
|
||||
* 发送文本邮件
|
||||
* @param to
|
||||
* @param subject
|
||||
* @param content
|
||||
*/
|
||||
@Override
|
||||
public void sendSimpleMail(String to, String subject, String content) {
|
||||
SimpleMailMessage message = new SimpleMailMessage();
|
||||
message.setFrom(from);
|
||||
message.setTo(to);
|
||||
message.setSubject(subject);
|
||||
message.setText(content);
|
||||
|
||||
try {
|
||||
mailSender.send(message);
|
||||
logger.info("简单邮件已经发送。");
|
||||
} catch (Exception e) {
|
||||
logger.error("发送简单邮件时发生异常!", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送html邮件
|
||||
* @param to
|
||||
* @param subject
|
||||
* @param content
|
||||
*/
|
||||
@Override
|
||||
public void sendHtmlMail(String to, String subject, String content) {
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
|
||||
try {
|
||||
//true表示需要创建一个multipart message
|
||||
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
||||
helper.setFrom(from);
|
||||
helper.setTo(to);
|
||||
helper.setSubject(subject);
|
||||
helper.setText(content, true);
|
||||
|
||||
mailSender.send(message);
|
||||
logger.info("html邮件发送成功");
|
||||
} catch (MessagingException e) {
|
||||
logger.error("发送html邮件时发生异常!", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发送带附件的邮件
|
||||
* @param to
|
||||
* @param subject
|
||||
* @param content
|
||||
* @param filePath
|
||||
*/
|
||||
@Override
|
||||
public void sendAttachmentsMail(String to, String subject, String content, String filePath){
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
|
||||
try {
|
||||
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
||||
helper.setFrom(from);
|
||||
helper.setTo(to);
|
||||
helper.setSubject(subject);
|
||||
helper.setText(content, true);
|
||||
|
||||
FileSystemResource file = new FileSystemResource(new File(filePath));
|
||||
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
|
||||
helper.addAttachment(fileName, file);
|
||||
//helper.addAttachment("test"+fileName, file);
|
||||
|
||||
mailSender.send(message);
|
||||
logger.info("带附件的邮件已经发送。");
|
||||
} catch (MessagingException e) {
|
||||
logger.error("发送带附件的邮件时发生异常!", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发送正文中有静态资源(图片)的邮件
|
||||
* @param to
|
||||
* @param subject
|
||||
* @param content
|
||||
* @param rscPath
|
||||
* @param rscId
|
||||
*/
|
||||
@Override
|
||||
public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
|
||||
try {
|
||||
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
||||
helper.setFrom(from);
|
||||
helper.setTo(to);
|
||||
helper.setSubject(subject);
|
||||
helper.setText(content, true);
|
||||
|
||||
FileSystemResource res = new FileSystemResource(new File(rscPath));
|
||||
helper.addInline(rscId, res);
|
||||
|
||||
mailSender.send(message);
|
||||
logger.info("嵌入静态资源的邮件已经发送。");
|
||||
} catch (MessagingException e) {
|
||||
logger.error("发送嵌入静态资源的邮件时发生异常!", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
10
spring-boot-mail/src/main/resources/application.properties
Normal file
10
spring-boot-mail/src/main/resources/application.properties
Normal file
@@ -0,0 +1,10 @@
|
||||
spring.application.name=spirng-boot-mail
|
||||
|
||||
spring.mail.host=smtp.126.com
|
||||
spring.mail.username=xxxx@126.com
|
||||
spring.mail.password=Zxxxxxxx
|
||||
|
||||
spring.mail.default-encoding=UTF-8
|
||||
|
||||
mail.fromMail.addr=ixxxxw@126.com
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
您好,这是验证邮件,请点击下面的链接完成验证,<br/>
|
||||
<a href="#" th:href="@{ http://www.ityouknow.com/neo/{id}(id=${id}) }">激活账号</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.neo;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class MailApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
System.out.println("hello world");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.neo.service;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.thymeleaf.TemplateEngine;
|
||||
import org.thymeleaf.context.Context;
|
||||
|
||||
/**
|
||||
* Created by summer on 2017/5/4.
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class MailServiceTest {
|
||||
|
||||
@Autowired
|
||||
private MailService mailService;
|
||||
|
||||
@Autowired
|
||||
private TemplateEngine templateEngine;
|
||||
|
||||
@Test
|
||||
public void testSimpleMail() throws Exception {
|
||||
mailService.sendSimpleMail("ityouknow@126.com","test simple mail"," hello this is simple mail");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHtmlMail() throws Exception {
|
||||
String content="<html>\n" +
|
||||
"<body>\n" +
|
||||
" <h3>hello world ! 这是一封html邮件!</h3>\n" +
|
||||
"</body>\n" +
|
||||
"</html>";
|
||||
mailService.sendHtmlMail("ityouknow@126.com","test simple mail",content);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendAttachmentsMail() {
|
||||
String filePath="D:\\Log\\TaxCard.log";
|
||||
mailService.sendAttachmentsMail("ityouknow@126.com", "主题:带附件的邮件", "有附件,请查收!", filePath);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void sendInlineResourceMail() {
|
||||
String rscId = "neo006";
|
||||
String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
|
||||
String imgPath = "C:\\Users\\ityou\\Pictures\\logo\\smilef.png";
|
||||
|
||||
mailService.sendInlineResourceMail("ityouknow@126.com", "主题:这是有图片的邮件", content, imgPath, rscId);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void sendTemplateMail() {
|
||||
//创建邮件正文
|
||||
Context context = new Context();
|
||||
context.setVariable("id", "006");
|
||||
String emailContent = templateEngine.process("emailTemplate", context);
|
||||
|
||||
mailService.sendHtmlMail("ityouknow@126.com","主题:这是模板邮件",emailContent);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user