美文网首页
SpringBoot使用JavaMail导出流文件方案

SpringBoot使用JavaMail导出流文件方案

作者: Mongogo | 来源:发表于2019-06-05 17:32 被阅读0次

    在项目中,我们可能遇到使用邮箱导出文件的场景,在构建文件过程中有两种,一种是服务器或者其他地方有路径,可以获取文件流;一种是我们不想构建文件路径,只想使用流直接导出文件的情况,由于第一种相对简单,我这里只处理构建流导出方案。

    前期准备

    1. 新建一个springboot项目
    2. 在pom文件中引入JavaMail的依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
    1. 编写邮件发送的代码
        @Autowired
        private JavaMailSender mailSender;
    
        /**
         * 使用JavaMail导出带附件的字节流邮件
         * @param subject 邮件主题
         * @param fromEmail 发送的邮箱地址
         * @param toEmail 收件的邮箱地址
         * @param bodyContent 邮件正文内容
         * @param fileName 导出到邮箱的附件名称
         * @param attachmentByteArray 导出的文件字节数据
         */
        @Override
        public void exportAttachment(String subject, String fromEmail, String toEmail, String bodyContent, String fileName, byte[] attachmentByteArray) {
            try {
                MimeMessage mimeMessage = mailSender.createMimeMessage();
                mimeMessage.setFrom(fromEmail);
                mimeMessage.setRecipients(Message.RecipientType.TO, toEmail);
                mimeMessage.setSubject(subject);
    
                MimeMultipart contentMultipart = new MimeMultipart("mixed");
                // 创建附件
                MimeBodyPart excelBodyPart = new MimeBodyPart();
                DataSource dataSource = new ByteArrayDataSource(attachmentByteArray, "application/octet-stream");
                DataHandler dataHandler = new DataHandler(dataSource);
                excelBodyPart.setFileName(fileName);
                excelBodyPart.setDataHandler(dataHandler);
    
                // 正文内容
                MimeBodyPart textBodyPart = new MimeBodyPart();
                textBodyPart.setText(bodyContent);
    
                contentMultipart.addBodyPart(excelBodyPart);
                contentMultipart.addBodyPart(textBodyPart);
                mimeMessage.setContent(contentMultipart);
                mailSender.send(mimeMessage);
            } catch (MessagingException e) {
                throw new BizException("邮件发送失败");
            }
        }

    相关文章

      网友评论

          本文标题:SpringBoot使用JavaMail导出流文件方案

          本文链接:https://www.haomeiwen.com/subject/zutrextx.html