首页 > 其他分享 >Spring Boot如何实现邮件发送图片邮件?一文带你学会它!

Spring Boot如何实现邮件发送图片邮件?一文带你学会它!

时间:2023-10-21 12:32:47浏览次数:31  
标签:sendEmail Spring Boot 发送 MailService 邮件 图片

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

前言

随着互联网的发展,邮件成为了我们日常工作中常用的沟通方式之一。而邮件中有时候需要插入一些图片,如何通过程序发送图片邮件呢?本文将介绍如何通过Spring Boot实现邮件发送图片邮件。

摘要

本文将通过以下步骤来实现邮件发送图片邮件:

  1. 配置application.yml文件中的邮件配置信息

  2. 定义发送邮件的服务类

  3. 编写发送图片邮件的代码

  4. 编写测试用例进行测试

教学正文

实现步骤

  1. 在application.yml中配置邮件相关的信息,如SMTP地址、端口号、协议、发件人邮箱地址及密码,并开启SSL认证。
  2. 定义一个邮件服务类MailService,注入JavaMailSender,并定义发送邮件的方法sendEmail。
  3. 在sendEmail方法中,使用MimeMessageHelper辅助工具类创建MimeMessage类型的邮件,设置收件人、主题、内容和附件,并调用JavaMailSender的send方法发送邮件。
  4. 编写测试用例,使用@SpringBootTest注解加载整个Spring上下文,注入MailService,并调用sendEmail方法发送一封包含图片附件的测试邮件。

代码实现

配置邮件

application.yml文件中配置邮件相关的信息,如下所示:

spring:
  mail:
    host: smtp.xxx.com # 邮箱服务商的SMTP地址
    port: 465 # 端口号
    protocol: smtps # 使用的协议
    username: [email protected] # 发件人邮箱地址
    password: **** # 发件人邮箱密码
    properties:
      mail.smtp.auth: true
      mail.smtp.starttls.enable: true
      mail.smtp.ssl.enable: true
      mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory # 开启SSL认证

定义发送邮件的服务类

为了便于管理邮件发送的代码,我们可以定义一个邮件服务类MailService,在该类中定义发送邮件的方法sendEmail

@Component
public class MailService {

    @Autowired
    private JavaMailSender mailSender;

    /**
     * 发送邮件
     *
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     * @param file    附件
     */
    public void sendEmail(String to, String subject, String content, File file) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        helper.setFrom("[email protected]");
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(content, true);
        helper.addAttachment(file.getName(), file);

        mailSender.send(message);
    }
}

在该类中,我们注入了JavaMailSender,它是Spring提供的发送邮件的工具类。我们还定义了sendEmail方法,该方法接收收件人、主题、内容和图片附件,最终将邮件发送出去。其中,MimeMessageHelper是一个辅助工具类,用于创建MimeMessage类型的邮件。

发送图片邮件的代码

有了邮件服务类,我们就可以编写发送图片邮件的代码了。以下是一个例子:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {

    @Autowired
    private MailService mailService;

    @Test
    public void testSendImageEmail() throws Exception {
        String to = "[email protected]";
        String subject = "测试发送图片邮件";
        String content = "这是一份包含图片附件的邮件!";

        // 读取图片
        File file = ResourceUtils.getFile("classpath:static/images/test.jpg");

        // 发送邮件
        mailService.sendEmail(to, subject, content, file);
    }
}

在这个测试用例中,我们使用@SpringBootTest注解来加载整个Spring上下文,并注入MailService,然后调用它的sendEmail方法发送一封图片邮件。图片文件我们是放在resources/static/images文件夹下的。

测试用例

测试用例的代码已经在上一节中给出了。需要注意的是,如果你想在本地测试发送邮件,需要在测试用例中将收件人的地址改成自己的地址。

代码复盘

以上代码为使用Spring Boot发送图片邮件的示例代码。

首先,在application.yml文件中配置了邮件相关信息,包括SMTP地址、端口号、协议、发件人邮箱地址及密码,并开启了SSL认证。

然后,定义了一个邮件服务类MailService,其中注入了JavaMailSender,使用该工具类发送邮件。在邮件服务类中,定义了sendEmail方法,该方法接收收件人、主题、内容和附件,并将邮件发送出去。

最后,编写了一个测试用例,使用@SpringBootTest注解加载整个Spring上下文,并注入MailService,调用它的sendEmail方法发送一封包含图片附件的邮件。

通过这个示例代码,我们能够了解到使用Spring Boot发送图片邮件的基本流程。

小结

本文介绍了如何通过Spring Boot实现邮件发送图片邮件,并提供了完整的代码实现和测试用例。希望能够帮助到大家。

附录源码

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

总结

本文主要介绍了如何通过Spring Boot实现发送图片邮件。首先在application.yml文件中配置了邮件相关信息,然后定义了一个邮件服务类MailService,其中注入了JavaMailSender,使用该工具类发送邮件。最后,编写了一个测试用例,测试邮件发送功能。本文的示例代码能够帮助读者了解到使用Spring Boot发送图片邮件的基本流程,希望对读者有所帮助。

标签:sendEmail,Spring,Boot,发送,MailService,邮件,图片
From: https://blog.51cto.com/u_15700751/7966135

相关文章

  • Spring Boot中的过滤器、拦截器、监听器技巧汇总:让你快速成为大神
    环境说明:Windows10+Idea2021.3.2+Jdk1.8+SpringBoot2.3.1.RELEASE前言在Web应用程序中,我们经常需要处理请求和响应。有时,我们需要应用于所有请求和响应的通用逻辑。这就是过滤器、拦截器和监听器的用武之地。它们可以帮助我们在请求和响应被处理之前或之后执行一些通用逻......
  • springboot 配置文件元数据
    springboot配置文件元数据1.spring-configuration-metadata.json{"groups":[{"name":"management.appoptics.metrics.export","type":"org.springframework.boot.actuate.autoconfigure.metrics.export.app......
  • EDM邮件营销的标题怎么写?这样写阅读量会高吗?
    当今,随着数字化的快速发展,越来越多的企业开始采用电子邮件营销(EDMEmailmarketing)作为一种新的营销方式。而作为EDM营销的关键一环,邮件标题的重要性不言而喻。好的标题不仅能够吸引用户打开邮件,还可以在一个瞬间充分传达营销信息。因此,本文将从多个角度解析EDM邮件营销的标题该如......
  • EDM邮件经验?大佬分享教你如何写邮件
    在现代社交互动的时代,很多企业都离不开邮件这一最基本的营销工具。那么如何编写一封行之有效的邮件呢?接下来,本文将为您分享10个EDM邮件经验。1.邮件主题要精彩EDM邮件经验?邮件主题是让读者打开邮件的第一眼,必须要让人产生革新、好奇或者紧急的感觉,让读者想立即访问您的网站或营销......
  • 使用Spring Integration接收TCP与UDP请求
    1.简介SpringIntegration是一个开源的项目,它是Spring生态系统的一部分,旨在简化企业集成(EnterpriseIntegration)的开发。它提供了一种构建消息驱动的、松散耦合的、可扩展的企业应用集成解决方案的方式。SpringIntegration基于SpringFramework构建,使开发者能够更容易地......
  • SpringBoot中启用虚拟线程
    1.什么是虚拟线程虚拟线程是JDK21版本正式发布的一个新特性。虚拟线程和平台线程主要区别在于,虚拟线程在运行周期内不依赖操作系统线程:它们与硬件脱钩,因此被称为“虚拟”。这种解耦是由JVM提供的抽象层赋予的。虚拟线程的运行成本远低于平台线程。它们消耗的内存要少得多。这就......
  • 基于Vue.js和Spring Boot的口罩自助售卖系统:设计、实现与技术深度解析
    本文介绍了一种基于Vue.js和SpringBoot的口罩自助售卖系统的设计与实现。该系统通过前端Vue.js框架和后端SpringBoot框架的结合,实现了用户注册登录、口罩浏览购买、订单管理等功能。通过详细的代码示例和技术深度的解析,读者能够全面了解系统的设计思路和实现方法。1.引言随着全......
  • uboot/Linux下MMC/SD/SDIO阅读记录
    1uboot下MMC/SD/SDIO1.1uboot下MMC/SD/SDIO相关配置uboot下关于MMC/SD/SDIO驱动以及工具配置:DeviceDrivers->MMCHostcontrollerSupportMMC/SD/SDIOcardsupport supportforMMC/SDwriteoperations--支持对MMC/SD/SDCar......
  • SpringBoot Vue3打造企业级一体化SaaS系统[最新版完结]
    点击下载:SpringBoot+Vue3打造企业级一体化SaaS系统     提取码:3ixbSpringBoot和Vue3是目前十分盛行的JavaWeb开发技术栈。SpringBoot能够快速构建Web应用程序,并提供许多有用的功用,如自动配置、快速开发、高效性能、易于部署等。Vue3是一种盛行的前端框架,它能够协助开发......
  • SpringCloudAlibaba Seata在Openfeign跨节点环境出现全局事务Xid失效原因底层探究
    原创/朱季谦曾经在SpringCloudAlibaba的Seata分布式事务搭建过程中,跨节点通过openfeign调用不同服务时,发现全局事务XID在当前节点也就是TM处,是正常能通过RootContext.getXID()获取到分布式全局事务XID的,但在下游节点就出现获取为NULL的情况,导致全局事务失效,出现异常时无法正常回......