轻松发送HTML格式邮件:Spring Boot邮件发送
🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。
本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
前言
在现代化的信息时代,邮件通讯是不可或缺的一部分。在我们的开发工作中,也经常需要使用邮件发送功能。本文介绍了如何使用Spring Boot发送HTML格式的邮件。
摘要
本文将介绍如何搭建Spring Boot项目,并使用JavaMailSender实现邮件发送。同时,将介绍如何发送HTML格式的邮件。
正文
实现步骤
- 在pom.xml中添加JavaMailSender的依赖。
- 在application.properties中配置邮件服务器参数。
- 创建JavaMailSender实例,并注入到需要使用邮件发送功能的类中。
- 构建一个MimeMessageHelper对象,并设置HTML格式的邮件内容。
- 调用JavaMailSender实例的send方法发送邮件。
- 编写测试用例来验证邮件发送是否成功。
集成JavaMailSender
在Spring Boot应用中,我们可以通过集成JavaMailSender实现邮件发送功能。JavaMailSender是Spring框架提供的一个邮件发送工具。
首先,在pom.xml中添加JavaMailSender的依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.5.5</version>
</dependency>
<!-- Java Mail Sender -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.5.5</version>
</dependency>
</dependencies>
然后,我们需要在application.properties中配置邮件发送参数:
# 邮件服务器参数配置
spring.mail.host=smtp.qq.com
spring.mail.username=your_email@qq.com
spring.mail.password=your_email_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
spring.mail.properties.mail.smtp.socketFactory.port=465
这里我们使用的是QQ邮件服务器,其他邮件服务器的配置参数可参考邮件服务器提供的文档。
发送HTML格式邮件
接下来,我们将介绍如何发送HTML格式的邮件。首先,我们需要在JavaMailSender实例中构建一个MimeMessageHelper对象。
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
通过设置MimeMessageHelper对象的第二个参数为true,我们可以启用HTML格式的邮件。设置第三个参数为UTF-8,可以确保中文不乱码。
然后,我们可以使用MimeMessageHelper的setText方法设置HTML内容。例如:
helper.setText("<html><body><h1>Hello World!</h1></body></html>", true);
在HTML代码中,我们可以使用标准的HTML标签来创建邮件内容。
最后,我们需要调用JavaMailSender实例的send方法发送邮件。
mailSender.send(message);
完整代码
下面是一个完整的Spring Boot邮件发送示例。该示例代码包含了邮件发送方法和测试代码。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@SpringBootApplication
@Controller
public class EmailApplication {
@Autowired
private JavaMailSender mailSender;
/**
* 发送HTML格式邮件
*/
@RequestMapping("/sendHtmlMail")
@ResponseBody
public String sendHtmlMail() throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom("your_email@qq.com");
helper.setTo("recipient_email@qq.com");
helper.setSubject("Test HTML Email");
helper.setText("<html><body><h1>Hello World!</h1></body></html>", true);
mailSender.send(message);
return "邮件发送成功";
}
public static void main(String[] args) {
SpringApplication.run(EmailApplication.class, args);
}
}
代码解释
这是一个基于Spring Boot框架的发送邮件的示例代码。使用了JavaMail API和Spring Boot的JavaMailSender来发送HTML格式的邮件。在发送邮件的控制器中,使用了RequestMapping和ResponseBody注解来将发送邮件的方法映射到访问的URL地址,并返回发送成功的提示信息。在主函数中,使用SpringApplication的静态方法run来启动Spring Boot应用程序。
测试用例
我们可以使用JUnit来编写测试用例:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.mail.MessagingException;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
class EmailApplicationTests {
@Autowired
private EmailApplication emailApplication;
@Test
void testSendHtmlMail() throws MessagingException {
String result = emailApplication.sendHtmlMail();
assertEquals("邮件发送成功", result);
}
}
代码解析
这是一个使用Spring Boot和JavaMailSender发送HTML格式邮件的示例代码,其中:
- 通过
@Autowired
注解注入JavaMailSender
对象,这个对象会在Spring Boot启动时自动创建并配置好。 - 定义了一个
sendHtmlMail
方法,使用MimeMessage和MimeMessageHelper来创建HTML邮件,然后通过mailSender
发送出去。 - 通过
@RequestMapping
注解定义了一个请求路径/sendHtmlMail
,在请求该路径时会调用sendHtmlMail
方法,并通过@ResponseBody
注解将返回结果直接输出到响应体中。 - 使用JUnit来编写测试用例,测试
sendHtmlMail
方法是否能成功发送一封HTML格式的邮件。其中@SpringBootTest
注解表示测试需要启动Spring Boot应用程序,@Autowired
注解注入了EmailApplication
对象,用于测试它的sendHtmlMail
方法。使用assertEquals
方法比较返回结果与预期结果是否相等。
小结
本文介绍了如何使用Spring Boot发送HTML格式的邮件。首先,我们需要在application.properties中配置邮件服务器参数,然后集成JavaMailSender。接下来,我们使用MimeMessageHelper对象设置HTML格式的邮件内容,并调用JavaMailSender实例的send方法发送邮件。最后,我们编写了测试用例来验证邮件发送是否成功。
附录源码
如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。
总结
本文介绍了如何使用Spring Boot和JavaMailSender实现邮件发送功能,并重点介绍了如何发送HTML格式的邮件。首先,配置了邮件服务器参数,然后使用JavaMailSender发送邮件。对于HTML格式的邮件,需要创建MimeMessageHelper对象,并设置参数为true和UTF-8,以启用HTML格式并保证中文不乱码。然后使用setText方法设置HTML内容,并调用JavaMailSender实例的send方法发送邮件。最后,编写了测试用例来验证邮件发送的正确性。总之,本文给出了简单易懂的步骤和代码示例,对于需要发送HTML格式的邮件的开发人员有很大的帮助。
☀️建议/推荐你
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
📣关于我
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。
- 点赞
- 收藏
- 关注作者
评论(0)