简单易用的Spring Boot邮件发送demo

 更新时间:2023年12月06日 10:10:48   作者:bug菌  
本文将介绍如何使用Spring Boot发送邮件,我们将演示如何配置SMTP邮件服务器,创建一个邮件模板,以及如何使用JavaMailSender发送邮件,我们还将介绍如何测试我们的邮件发送代码

 引言

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

在现代web应用程序中,发送邮件是一项非常重要的任务。Spring Boot提供了一种简单易用的方式来发送邮件。在本文中,我们将学习如何使用Spring Boot发送邮件。

Spring如何实现邮件发送?

本文介绍了如何使用Spring Boot发送邮件。我们首先需要配置SMTP邮件服务器,然后创建邮件模板并使用Thymeleaf模板引擎解析动态内容。最后,我们使用JavaMailSender类来发送邮件。我们还编写了一个测试用例来测试我们的代码。通过阅读本文,你将了解到如何在Spring Boot中发送邮件。

实现步骤

实现步骤如下:

配置SMTP邮件服务器,包括地址、端口、用户名、密码等。

创建Thymeleaf模板,包含邮件内容和动态内容。

使用JavaMailSender类发送邮件,包括设置主题、收件人、内容等。

编写测试用例进行测试。

总之,Spring Boot提供了一个简单的方法来发送电子邮件,使得发送电子邮件变得更加容易和高效。如果您需要发送电子邮件,这个技术是值得一试的。

配置SMTP邮件服务器

要发送邮件,我们需要配置SMTP服务器。Spring Boot提供了一个spring.mail的配置属性来设置SMTP服务器的地址和端口。例如,以下是一个配置示例:

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-password
spring.mail.properties.mail.smtp.starttls.enable=true

在上面的配置中,我们将SMTP服务器地址和端口设置为smtp.gmail.com和587。我们还提供了一个帐户名和密码,这是我们将使用的帐户来发送邮件。

创建邮件模板

在发送邮件之前,我们需要创建一个邮件模板。邮件模板是一个HTML文件,可以包含动态内容,例如收件人姓名,邮件正文,附件等。我们可以使用Thymeleaf模板引擎来创建邮件模板。

下面是一个示例邮件模板:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Spring Boot Email</title>
</head>
<body>
    Hello!
    <p th:text="${message}"></p>
</body>
</html>

在上面的模板中,我们使用了Thymeleaf的模板表达式来显示动态内容。例如,我们使用${recipientName}表达式来显示收件人姓名。

发送邮件

现在我们已经准备好发送邮件了。我们将使用JavaMailSender类来发邮件。这个类是Spring Boot提供的一个用于发送邮件的简单JavaMail实现。

下面是一个示例邮件发送代码:

@Service
public class EmailService {
    private JavaMailSender javaMailSender;
    @Autowired
    public EmailService(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }
    public void sendEmail(String recipientEmail, String subject, String message) throws MessagingException, IOException, TemplateException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setTo(recipientEmail);
        Context context = new Context();
        context.setVariable("recipientName", "John Doe");
        context.setVariable("message", message);
        String content = templateEngine.process("email-template", context);
        mimeMessageHelper.setText(content, true);
        javaMailSender.send(mimeMessage);
    }
}

在上面的代码中,我们注入了JavaMailSender并使用它来创建MimeMessage。我们还使用MimeMessageHelper类来设置邮件主题,收件人和其他属性。

我们还使用了Thymeleaf的TemplateEngine类来解析邮件模板。我们设置了一个上下文对象来传递动态内容,并将其与模板合并生成HTML内容。

最后,我们调用JavaMailSender的send方法来发送邮件。这个方法将使用之前配置的SMTP服务器和帐户来发送邮件。

测试用例

为了测试我们的邮件发送代码,我们需要编写一些测试用例。我们可以使用JUnit框架来编写这些测试用例。

以下是一个示例测试用例:

@SpringBootTest
public class EmailServiceTest {
    @Autowired
    private EmailService emailService;
    @Test
    public void testSendEmail() throws Exception {
        String recipientEmail = "recipient@example.com";
        String subject = "Test Email";
        String message = "This is a test email";
        emailService.sendEmail(recipientEmail, subject, message);
    }
}

在上面的测试用例中,我们注入了EmailService并调用了sendEmail方法。我们只需要向方法传递一些基本参数,例如收件人地址,主题和消息。

小结

在本文中,我们学习了如何使用Spring Boot发送邮件。我们了解了如何配置SMTP服务器,创建邮件模板,以及如何使用JavaMailSender发送邮件。我们还编写了一个测试用例来测试我们的代码。

总之,Spring Boot提供了一个简单的方法来发送电子邮件,使得发送电子邮件变得更加容易和高效。如果您需要发送电子邮件,这个技术是值得一试的。

附录源码

如上涉及所有源码均已上传同步在 「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

以上就是简单易用的Spring Boot邮件发送demo的详细内容,更多关于Spring Boot邮件发送的资料请关注脚本之家其它相关文章!

相关文章

  • 解析Nacos的API居然存在这么严重的漏洞

    解析Nacos的API居然存在这么严重的漏洞

    这篇文章主要介绍了Nacos的API居然存在这么严重的漏洞,Nacos为我们提供了大量API,但是这些API默认是没有开启认证的,直接可以访问,针对于这一点我们也都可以去验证一下,本文给大家详细讲解,感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • SpringCloud服务实现同时使用eureka和nacos方法

    SpringCloud服务实现同时使用eureka和nacos方法

    这篇文章主要介绍了SpringCloud服务实现同时使用eureka和nacos方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • Java守护线程和用户线程的区别

    Java守护线程和用户线程的区别

    这篇文章主要介绍了Java守护线程和用户线程的区别,用户线程和守护线程,默认情况下我们创建的线程或线程池都是用户线程,所以用户线程也被称之为普通线程,下文更多详细内容需要的小伙伴可以参考一下
    2022-05-05
  • Java获取项目路径方式System.getProperty(“user.dir“)

    Java获取项目路径方式System.getProperty(“user.dir“)

    这篇文章主要介绍了Java获取项目路径方式System.getProperty(“user.dir“),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • @ComponentScan注解用法之包路径占位符解析

    @ComponentScan注解用法之包路径占位符解析

    这篇文章主要介绍了@ComponentScan注解用法之包路径占位符解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • logback StatusListener的定义方法源码解读

    logback StatusListener的定义方法源码解读

    这篇文章主要为大家介绍了logback StatusListener的定义方法源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • springboot拦截器Interceptor的使用,你都了解吗

    springboot拦截器Interceptor的使用,你都了解吗

    springmvc 中的拦截器可以对请求进行判别,在请求到达控制器之前,把非法的请求给拦截掉下面来说一说, 它在springboot中的使用,感兴趣的朋友一起看看吧
    2021-07-07
  • 三种Java自定义DNS解析器方法与实践

    三种Java自定义DNS解析器方法与实践

    这篇文章主要分享三种Java自定义DNS解析器方法与实践,对于高性能的测试机(54C96G * 3)而言,可任意通过自定义Java DNS解析器来实现接口请求,下文内容的实现,需要的小伙伴可以参考一下
    2022-02-02
  • Java与Python两种编程语言的比较与应用举例详解

    Java与Python两种编程语言的比较与应用举例详解

    这篇文章主要介绍了Java与Python两种编程语言比较与应用的相关资料,Java和Python各有特点,Java适用于企业级应用开发,Python则在数据科学和机器学习领域占优势,两者在语法、应用领域、性能、开发效率等方面存在差异,需要的朋友可以参考下
    2025-02-02
  • Java京东面试题之为什么HashMap线程不安全

    Java京东面试题之为什么HashMap线程不安全

    那天,小二去京东面试,面试官老王一上来就甩给了他一道面试题:为什么 HashMap 是线程不安全的?这个问题哪能难的住小二,这篇文章详细解答该题目
    2021-11-11

最新评论