springboot利用javaMail实现发送附件邮件的两种接口(K-V格式参数,json格式参数),已解决文件名中文乱码

以K-V格式参数:

@RequestMapping("/multiSendByKV")
    public String  multiSendByKV( MultipartFile file, MailEntity mailEntity) throws Exception {
        if(file == null){
            return mailMutilSend(mailEntity);
        }
        String filename = file.getOriginalFilename();
        logger.info(filename);
        boolean boo = SeparatorUtil.isMailAccount(mailEntity.getAcceptors());
        if(!boo){
            return "请检查邮件接收者格式错误";
        }
        String[] users = mailService.getAcceptors(mailEntity.getAcceptors());
        JavaMailSenderImpl mailSender = mailService.getMailSenderInstance();

        //复杂邮件
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        //邮件发送助手
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true,"utf-8");
        helper.setFrom("[email protected]");

        // 群发
        helper.setTo(users);
        helper.setSubject(mailEntity.getSubject());
        //true表示支持html格式的内容
        helper.setText(mailEntity.getContent(),true);

        //添加多个附件可以使用多条
        //MimeUtility.encodeText(fileName,"utf-8",null)是为了解决文件名中文乱码
        helper.addAttachment(MimeUtility.encodeText(fileName,"utf-8",null),file);
        mailSender.send(mimeMessage);
        return "success";
    }

以json格式参数:

因为json只支持字符串,所以需要将文件file转化为Base64字符串,接口如下

@RequestMapping("/transferFileToBase64")
    public String transferFileToBase64(MultipartFile file) throws Exception{
        if(file == null){
            return null;
        }

        byte[] bytes = IOUtils.toByteArray(file.getInputStream(),file.getSize());

        String str = Base64.getEncoder().encodeToString(bytes);

        logger.info(str);
        return str;
    }

然后提供json格式邮件发送接口

@RequestMapping("/multiSendByJson")
    public String  multiSendByJson( @RequestBody MailEntity mailEntity) throws Exception {
        String fileBase64 = mailEntity.getFileBase64();
        if(StringUtils.isEmpty(fileBase64)){
            return mailMutilSend(mailEntity);
        }

        byte[] bytes = Base64.getDecoder().decode(fileBase64);

        //InputStream byteInputStream = new ByteArrayInputStream(bytes);
        boolean boo = SeparatorUtil.isMailAccount(mailEntity.getAcceptors());
        if(!boo){
            return "请检查邮件接收者格式错误";
        }
        String[] users = mailService.getAcceptors(mailEntity.getAcceptors());
        JavaMailSenderImpl mailSender = mailService.getMailSenderInstance();
        //复杂邮件
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        //邮件发送助手
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true,"utf-8");
        helper.setFrom("[email protected]");
        // 群发
        helper.setTo(users);
        helper.setSubject(mailEntity.getSubject());
        helper.setText(mailEntity.getContent(),true);

        LocalDate date = LocalDate.now();
        String customFileName = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+"-onstar.txt";

        String fileName = StringUtils.isEmpty(mailEntity.getFileName)?customFileName:mailEntity.getFileName;
        //helper.addAttachment(MimeUtility.encodeText(fileName,"utf-8",null), new ByteArrayResource(IOUtils.toByteArray(byteInputStream)));

        helper.addAttachment(MimeUtility.encodeText(fileName,"utf-8",null), new ByteArrayResource(bytes));
        mailSender.send(mimeMessage);

        return "success";

    }

猜你喜欢

转载自blog.csdn.net/qq_35337467/article/details/81356673