无法通过javamail发送zip文件

时间:2017-04-13 07:39:12

标签: java javamail

我正在尝试通过javamail发送包含zip文件的附件。但是,发送它时会抛出异常

  

com.sun.mail.smtp.SMTPSendFailedException:552-5.7.0此邮件已被阻止,因为其内容存在潜在的552-5.7.0安全问题。

我将MIME内容类型添加为application/zip,但面临

javax.mail.MessagingException: IOException while sending message;
 nested exception is:
 javax.activation.UnsupportedDataTypeException: no object DCH for MIME type 
 application/zip at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1167)

以下是我的代码段:

BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "application/zip");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
File srcFile = new File(System.getProperty("user.dir")+ "/Reports/");
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(srcFile.getPath()+"/Report.zip");
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName("Report.zip");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);

当我删除.zip扩展名时,它可以正常工作但不能使用.zip。

1 个答案:

答案 0 :(得分:1)

您的代码正在添加附件两次,我确定这不是您想要的。用以下代码替换您的代码:

MimeBodyPart messageBodyPart = new MimeBodyPart();
String srcFile = System.getProperty("user.dir") + "/Reports/Report.zip";
messageBodyPart.attachFile(srcFile, "application/zip", "base64");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
相关问题