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

举报
bug菌 发表于 2023/10/11 17:12:58 2023/10/11
【摘要】 🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。


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

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

环境说明: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: xxx@xxx.com # 发件人邮箱地址
    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("xxx@xxx.com");
        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 = "xxx@xxx.com";
        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发送图片邮件的基本流程,希望对读者有所帮助。

☀️建议/推荐你


无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。