首页 > 编程语言 >Spring Boot集成JavaMailSender发送邮件,支持二进制流

Spring Boot集成JavaMailSender发送邮件,支持二进制流

时间:2024-04-10 11:23:25浏览次数:26  
标签:JavaMailSender helper Spring Boot 发送 new 邮件

什么是JavaMailSender
JavaMailSender是Spring Framework中的一个接口,用于发送电子邮件。它是Spring对JavaMail API的封装,提供了更简单和更方便的方式来发送邮件。

JavaMailSender接口定义了一组发送邮件的方法,包括发送简单文本邮件、发送带附件的邮件、发送HTML格式的邮件等。它隐藏了底层JavaMail API的复杂性,使得在Spring应用中发送邮件变得更加容易。

在Spring Boot中,你可以通过依赖注入JavaMailSender来使用它。通过配置邮件服务器的相关信息,你可以使用JavaMailSender发送邮件。

JavaMailSender接口的常用实现类是JavaMailSenderImpl,它是基于JavaMail API实现的。除了JavaMailSenderImpl,Spring还提供了其他的实现类,例如MockMailSender用于测试目的。

使用JavaMailSender,你可以方便地发送邮件,设置收件人、发件人、主题、正文等信息,并可以附加文件、设置抄送、密送等功能。

首先引入依赖

 <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-mail</artifactId>
 </dependency>

然后配置文件

 spring: 
        mail:
               default-encoding: UTF-8
               host: xxxxxx
               port: xxxxx
               username: xxxx邮箱
               password: xxxx
               protocol: smtp 

代码编写:

public void send(String content, List<String> filePaths) {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(mimeMessage, true);\\true支持附件
            helper.setFrom("你的发件人邮箱");
            helper.setTo(rosters.split(",")); \\收件人邮箱,支持多个
            helper.setText(msg, true); \\邮件内容 true为html格式 false为text格式
            helper.setSubject("邮件主题");
            helper.setSentDate(new Date());
            //设置附件
            addFile(filePaths, helper);
            mailSender.send(mimeMessage);
        } catch (Exception e) {
     
        }
     
    }    

添加附件,我这边是远程读取文件,使用二进制流的方式

    private void addFile(List<String> filePaths, MimeMessageHelper helper) throws Exception {
        int i = 1;
        for (String filePath : filePaths) {
            ByteArrayOutputStream os1 = new ByteArrayOutputStream();
            RFileUtil.readFile(os1, filePath);
            ByteArrayDataSource byteArrayDataSource = new ByteArrayDataSource(os1.toByteArray(), "image/png");
            helper.addAttachment("photo" + i++ + ".jpg", byteArrayDataSource);
        }
    }

如果是本地文件,则使用

helper.addAttachment("photo" + i++ + ".jpg",new File("xxxxxx"));

 

使用非常简单,有兴趣的可以试试.

谢谢大家的关注.

 

标签:JavaMailSender,helper,Spring,Boot,发送,new,邮件
From: https://www.cnblogs.com/wnhbx/p/18125651

相关文章

  • 基于Springboot+Vue的Java项目-月度员工绩效考核管理系统(附演示视频+源码+LW)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • Java面试题-13Spring
    1、事务管理spring事务分为编程式事务和声明式事务Spring事务管理器的行为的重要组成部分。下面是对这些属性的简要解释:1.**value**:用于指定事务管理器的名称。如果应用中只有一个事务管理器,通常可以省略该属性。2.**propagation**:指定事务的传播机制,即在多个事务方法相互调......
  • 【Spring】-Spring之线程池
    目录Spring中的线程池Spring中的线程池在spring中其实也是有线程池的,一般使用的是ThreadPoolTaskExecutor该类,其实现方法还是java.util.concurrent中的ThreadPoolExecutor线程为了提高自定义化,一般都是自定义配置核心线程数,最大线程数,队列,以及拒绝策略,下面是代码演示,@......
  • 【Spring】-Spring 之AOP注解
    目录Spring之AOP注解AOP思想:AOP的使用场景:@Aspect的使用以及基本概念:1.切面类2.切点@Pointcut3.Advice,4.JoinPoint:5.使用&&、||、!、三种运算符来组合切点表达式,表示与或非的关系;6.@annotation(annotationType)匹配指定注解为切入点的方法;具体代码实现:Spring之AOP注解A......
  • 基于java+springboot+vue实现的农产品智慧物流系统(文末源码+Lw)23-239
    摘 要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用农产品智慧物流系统可以有效管理,使信息管......
  • 基于java+springboot+vue实现的人事管理系统(文末源码+Lw)23-242
    摘 要使用旧方法对人事管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在人事管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的人事管理系统对字典管理、公告管理、绩效管理、......
  • 【SpringBoot + Tomcat】【二】请求到达后端服务进程后的处理过程-连接的处理细节
    1 前言上节的后半部分,由于忙项目的事情去了,收尾的有点潦草,我们这节再继续。上节我们的思路是先简单回顾了下,SpringBoot启动和创建Tomcat的时机,然后我们还主要看了下连接器Connector的创建已经启动过程。连接器本身很重要,因为它就像一个港口或者一个枢纽,连接着客户端和服......
  • 详解Java Chassis 3与Spring Cloud的互操作
    本文分享自华为云社区《JavaChassis3技术解密:与SpringCloud的互操作》,作者:liubao68。JavaChassis3一个很重要的设计原则:利用架构的韧性设计来解决兼容性问题。比如通过引入微服务网关,来解决不同语言、不同框架、遗留系统之间的互操作问题。本文在这个架构原则基础上,讨论......
  • CMD 批处理脚本自定义 UEFI 启动项,您需要使用 bcdedit 命令来操作 Windows 引导管理器
    CMD批处理脚本自定义UEFI启动项,您需要使用bcdedit命令来操作Windows引导管理器(BootConfigurationData,BCD)。BCD存储了计算机启动时所需的信息,包括可用的操作系统和启动选项。以下是一个简单的示例,演示如何使用CMD批处理脚本添加、修改和删除启动项:1.添加启动项要添......
  • 2.Spring 核心与设计思想
    文章目录1.Spring是什么?1.1什么是容器?1.2什么是IoC?1.2.1传统程序开发1.2.2控制反转式程序开发1.2.3对比总结规律1.3理解SpringIoC1.4DI概念说明2.总结2.总结大家好,我是晓星航。今天为大家带来的是Spring核心与设计思想相关的讲解!......