Spring Boot如何实现邮件发送附件?一文带你搞定它!

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


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

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

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

前言

随着互联网的发展,电子邮件已经成为人们日常工作中不可或缺的一部分。在软件开发领域中,发送邮件也是必不可少的一项功能。本文将介绍如何在Spring Boot中使用JavaMailSender发送带附件的邮件。

摘要

本文将从以下几个方面介绍如何在Spring Boot中发送带附件的邮件:

  • 配置Spring Boot的JavaMailSender
  • 创建MimeMessageHelper对象
  • 添加附件
  • 发送邮件

教学

实现步骤

  1. 在application.properties(或application.yml)文件中添加邮件发送相关的配置,包括邮件服务器地址、端口号、用户名和密码等信息。
  2. 创建JavaMailSender bean,通过JavaMailSenderImpl对象设置邮件服务器地址、端口号、用户名和密码等信息,并将JavaMailSenderImpl对象的属性添加到Properties对象中。
  3. 创建MimeMessage对象和MimeMessageHelper对象,MimeMessageHelper对象用于构建邮件。通过MimeMessageHelper对象设置邮件发送者、接收者、主题和正文等信息。
  4. 使用MimeMessageHelper对象的addAttachment()方法添加附件。
  5. 通过JavaMailSender发送邮件。
  6. 编写测试用例,验证发送带附件的邮件功能是否正确。

代码实现

配置JavaMailSender

首先需要在application.properties(或application.yml)文件中添加邮件发送相关的配置,如下所示:

spring.mail.host=smtp.example.com
spring.mail.port=587
spring.mail.username=yourusername
spring.mail.password=yourpassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

然后在代码中使用JavaMailSenderImpl创建JavaMailSender bean:

@Configuration
public class MailConfig {

    @Bean
    public JavaMailSender javaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost(env.getRequiredProperty("spring.mail.host"));
        mailSender.setPort(Integer.parseInt(env.getRequiredProperty("spring.mail.port")));
        mailSender.setUsername(env.getRequiredProperty("spring.mail.username"));
        mailSender.setPassword(env.getRequiredProperty("spring.mail.password"));

        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.smtp.auth", env.getRequiredProperty("spring.mail.properties.mail.smtp.auth"));
        props.put("mail.smtp.starttls.enable", env.getRequiredProperty("spring.mail.properties.mail.smtp.starttls.enable"));

        return mailSender;
    }
}

创建MimeMessageHelper对象

在发送带附件的邮件时,需要使用MimeMessageHelper对象来构建邮件。创建MimeMessageHelper对象时需要传入一个MimeMessage对象以及一个布尔值multipart,表示邮件是否包含附件。示例代码如下:

MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);

添加附件

在构建邮件时,可以使用addAttachment()方法来添加附件。方法参数包括附件名称以及附件的DataSource对象。示例代码如下:

Resource resource = new ClassPathResource("test.txt");
helper.addAttachment(resource.getFilename(), resource);

发送邮件

添加附件完成之后,调用send()方法即可将邮件发送出去。示例代码如下:

javaMailSender.send(message);

测试用例

为了验证发送邮件的功能是否正确,我们可以编写一个简单的测试用例。

@SpringBootTest
public class MailServiceTest {

    @Autowired
    private JavaMailSender javaMailSender;

    @Test
    public void sendMailWithAttachment() throws Exception {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom("sender@example.com");
        helper.setTo("recipient@example.com");
        helper.setSubject("Test mail");
        helper.setText("This is a test email with attachment.");

        Resource resource = new ClassPathResource("test.txt");
        helper.addAttachment(resource.getFilename(), resource);

        javaMailSender.send(message);
    }
}

代码解析

在测试方法中,首先通过@Autowired注入了JavaMailSender对象,然后创建了一个MimeMessage对象,并使用MimeMessageHelper对象设置邮件的发送者、接收者、主题和正文。接着,从资源文件中读取了一个txt文件,并将其作为附件添加到邮件中。最后,通过JavaMailSender发送邮件。

这个测试方法的意义在于验证程序能否正确地发送带有附件的电子邮件。它可以通过模拟一些邮件发送的操作流程,对邮件发送功能进行测试,确保在实际运行过程中,邮件发送服务是可靠的。

小结

本文介绍了如何在Spring Boot中发送带附件的邮件,包括配置JavaMailSender、创建MimeMessageHelper对象、添加附件和发送邮件。通过本文的介绍,相信读者已经了解了如何在Spring Boot中使用JavaMailSender实现邮件发送功能。

附录源码

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

总结

本文介绍了如何在Spring Boot中使用JavaMailSender发送带附件的邮件。首先需要在application.properties文件中添加邮件发送相关的配置,然后在代码中使用JavaMailSenderImpl创建JavaMailSender bean。接着,通过创建MimeMessageHelper对象来构建邮件,并使用addAttachment()方法添加附件。最后调用send()方法将邮件发送出去。为了验证邮件发送功能是否正确,编写了一个简单的测试用例。通过本文的介绍,读者可以了解如何在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个月内不可修改。