网上很多都是从本地服务目录读取文件进行发送,实际项目中可能需求不一样,可能附件数据是以base64数据或者字节流形式传输给服务端,因此就需要自定义,无法通过本地目录读取,下面介绍如何通过字节流的形式发送附件。
首先要添加依赖包:
org.springframework.boot spring-boot-starter-mail
重点:将附件以字节流的形式发送。
@Slf4j @Service public class MailSendService { @Resource private JavaMailSender javaMailSender; public boolean sendAttachmentMail(EmailRequest request) { try { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); // true表示构建一个可以带附件的邮件对象 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("fajianren@qq.com"); helper.setTo("shoujianren@qq.com"); helper.setSubject("标题"); helper.setText("内容"); byte[] byteArray = "字节流内容".getBytes(); if (byteArray != null){ //封装字节流,以数组流的形式作为附件发送。 ByteArrayResource bar = new ByteArrayResource(byteArray); helper.addAttachment(request.getAttachmentName(), bar); javaMailSender.send(mimeMessage); return true; }else{ log.info("sendAttachmentMail attachment is empty:{}", request.getAttachmentPath()); return false; } } catch (Exception e) { log.error("sendAttachmentMail error:{}", e.getMessage(), e); return false; } } }
网上查到大部分都是读取本地目录文件形式:
FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = file.getFilename(); helper.addAttachment(fileName, file);
每个人根据自己传输内容不通可以选用不通过的形式,也可以自定义自己的实现方式:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)