2017-04-13 18 views
1

javamailを使用してzipファイルを含む添付ファイルを送信しようとしています。送信中しかし、それはjavamailでzipファイルを送信できません

com.sun.mail.smtp.SMTPSendFailedExceptionなどの例外がスローされます。その内容は、潜在的な552-5.7.0セキュリティ上の問題を提示しているため552-5.7.0このメッセージがブロックされました。

私はapplication/zipとしてMIMEコンテンツタイプを追加しましたが、以下

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添付ファイルを好まないことを示唆しているようです.2番目のエラーはまったく異なり、電子メールがサーバーに渡される前に発生します。どちらですか? –

+0

@Mark Rotteveel:すべてのエラーは 'Transport.send(message);'にあります。 – biz00ka

+0

しかし、あなたはどちらか一方を取るべきです。両方ではありません。 1つのエラーが発生した場合と他のエラーが発生した場合は、注意深く記述してください。 –

答えて

1

あなたのコードは添付ファイルを2回追加していますが、私はあなたが望むものではないと確信しています。コードを次のように置き換えてください:

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 ");'は自分のコード内で1つのパラメータしか取っていません。実行後、 'com.sun.mail.smtp.SMTPSendFailedException:552-5.7.0が表示されています。このメッセージは、' transport.send(message) 'のコンテンツに潜在的な552-5.7.0セキュリティ問題があるためブロックされました。 – biz00ka

+0

複数のattachFileメソッドがあります。パラメータが1つのものだけがMIMEタイプとエンコーディングを選択します。 MIMEタイプをapplication/zipにする場合は、3つのパラメータを持つバージョンが必要です。もちろん、これはあなたの電子メールサービスのセキュリティ制限を回避し、あなたがzipファイルを送信できないようにするものではありません。そのためには、メールサービスプロバイダに相談したり、添付ファイル以外の方法でデータを送信する必要があります。 –

関連する問題