轻松发送HTML格式邮件:Spring Boot邮件发送
  HptQjPcX5vAL 2023年11月02日 38 0

在这里插入图片描述


🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。

本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

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

前言

在现代化的信息时代,邮件通讯是不可或缺的一部分。在我们的开发工作中,也经常需要使用邮件发送功能。本文介绍了如何使用Spring Boot发送HTML格式的邮件。

摘要

本文将介绍如何搭建Spring Boot项目,并使用JavaMailSender实现邮件发送。同时,将介绍如何发送HTML格式的邮件。

正文

实现步骤

  1. 在pom.xml中添加JavaMailSender的依赖。
  2. 在application.properties中配置邮件服务器参数。
  3. 创建JavaMailSender实例,并注入到需要使用邮件发送功能的类中。
  4. 构建一个MimeMessageHelper对象,并设置HTML格式的邮件内容。
  5. 调用JavaMailSender实例的send方法发送邮件。
  6. 编写测试用例来验证邮件发送是否成功。

集成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>Hello World!</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>Hello World!</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电子书籍、简历模板等海量资料。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
HptQjPcX5vAL