前言
本文主要介绍了两部分内容:如何将多文件打为压缩包、将压缩包作为邮件附件发送邮件
一、背景
最近要做一个需求,要求:将一批文件内容按照一定格式达成压缩包,并以附件形式发送到执行用户邮箱,这里做一个简单总结
二、使用步骤
1.引入依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mailapi</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.4</version>
</dependency>
一般公司都会有自己构建的依赖,大概不需要手动导入,这里为个人调试时使用的依赖
2、多文件输出并压缩为压缩包
private void export(String toEmail) {
// ...省略内部代码
OutputStream outputStream = new ByteArrayOutputStream(1024);
try {
ZipOutputStream zipOut = new ZipOutputStream(outputStream);
String dirName = String.format("%s-任务文件", taskId);
// 这里的myPoObject是本人业务对象,自行替换为要压缩的元信息
putDataToStream(myPoObject, zipOut, dirName);
// 不生成中间压缩包,直接将生成的zipOutStream转输入流,准备写入邮件附件
ByteArrayOutputStream baos = (ByteArrayOutputStream) outputStream;
InputStream bais = new ByteArrayInputStream(baos.toByteArray());
// 发送邮件,与压缩部分无关
mailService.sendMail(toEmail, bais, String.format("任务-%s.zip"