Я рассылаю пользователям отдельные (csv / html) файлы, которые имеют тенденцию становиться довольно большими.Если файлы становятся слишком большими, почта часто не приходит.Поэтому я хотел бы проверить, улучшит ли это сжатие этих файлов.В настоящее время у меня есть этот код:
// creates message part
MimeBodyPart messageBodyPart = new MimeBodyPart();
// messageBodyPart.setContent(mail, "text/html");
messageBodyPart.setContent(mail, "text/html; charset=UTF-8");
messageBodyPart.setFileName("file.zip");
// creates multi-part
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
if (raw_s3_data_files.size() > 0) {
for (int i = 0; i < raw_s3_data_files.size(); i++) {
String raw_s3_file_location = raw_s3_data_files.get(i);
MimeBodyPart attachPart = new MimeBodyPart();
try {
S3Object s3obj = s3.returnS3Object(this.bucketName, raw_s3_file_location);
if (s3obj != null) {
ByteArrayDataSource byte_array_data_source = new ByteArrayDataSource(s3obj.getObjectContent(), "text/csv");
attachPart.setDataHandler(new DataHandler(byte_array_data_source));
attachPart.setFileName(raw_s3_file_location.substring(raw_s3_file_location.indexOf("/") + 1));
multipart.addBodyPart(attachPart);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// sets the multi-part as e-mail's content
msg.setContent(multipart);
// sends the e-mail
Transport t = new AWSJavaMailTransport(session, null);
t.send(msg);
Я был бы в порядке, имея 3 отдельных ZIP-файла, но один большой ZIP-файл также в порядке.Я идентифицировал этот код:
public static byte[] zipBytes(String filename, byte[] input) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry entry = new ZipEntry(filename);
entry.setSize(input.length);
zos.putNextEntry(entry);
zos.write(input);
zos.closeEntry();
zos.close();
return baos.toByteArray();
}
Но это работает с ByteArrayOutputStream вместо ByteArrayDataSource, который я использую.Есть ли способ получить ZIP-версию из каждого файла?