2017-04-13 136 views
1

我想通過javamail發送包含zip文件的附件。然而,在發送它拋出一個異常作爲無法通過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 。

+2

什麼時候會發生?第一個錯誤似乎表明你的郵件服務器不喜歡zip-attachments,第二個錯誤是完全不同的,並且在電子郵件交給服務器之前發生。這是什麼? –

+0

@Mark Rotteveel:所有的錯誤都來自'Transport.send(message);'。 – biz00ka

+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); 
+0

:我根據您的輸入更改了我的代碼。然而,'messageBodyPart.attachFile(srcFile,「application/zip」,「base64」);'只在我的代碼中使用一個參數。執行後,它仍然顯示'com.sun.mail.smtp.SMTPSendFailedException:552-5.7.0此消息被阻止,因爲它的內容在'transport.send(message)'處出現潛在的552-5.7.0安全問題' – biz00ka

+0

有多個attachFile方法。只有一個參數的將爲您選擇MIME類型和編碼。如果您想強制MIME類型爲application/zip,則需要帶有三個參數的版本。當然,這些都不會繞過電子郵件服務的安全限制,從而阻止您發送zip文件。爲此,您需要與您的電子郵件服務提供商交談,或者以附加zip文件以外的方式發送您的數據。 –