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

什么是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"));

 

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

谢谢大家的关注.

 

posted @ 2024-04-10 11:16  蜗牛滑板鞋  阅读(73)  评论(0编辑  收藏  举报