2017-04-13 1 views
1

Ich versuche, einen Anhang mit einer Zip-Datei über Javamail zu senden. beim Senden jedoch wirft sie eine Ausnahme alsNicht in der Lage, eine ZIP-Datei über Javamail zu senden

com.sun.mail.smtp.SMTPSendFailedException: 552-5.7.0 Diese Nachricht wurde blockiert weil ihr Inhalt ein potenzielles 552-5.7.0 Sicherheitsproblem darstellt.

Ich habe MIME-Inhaltstyp als application/zip aber mit Blick auf

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) 

Unter meinen Code-Schnipsel ist:

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

Wenn ich die ZIP-Erweiterung entfernen es funktioniert gut, aber nicht mit .zip .

+2

Was passiert wann? Der erste Fehler scheint darauf hinzuweisen, dass Ihr Mailserver keine zip-Anhänge mag, der zweite Fehler ist völlig anders und würde passieren, bevor die E-Mail an den Server übergeben wird. Welches ist es? –

+0

@Mark Rotteveel: Alle Fehler kommen bei 'Transport.send (message);'. – biz00ka

+0

Aber du solltest das eine oder andere bekommen. Nicht beide. Bitte beschreiben Sie sorgfältig, wenn Sie einen Fehler bekommen und wenn der andere. –

Antwort

1

Ihr Code fügt den Anhang zweimal hinzu, was sicherlich nicht das ist, was Sie möchten. Ersetzen Sie Ihren Code durch diesen:

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

: Ich habe meinen Code nach Ihrer Eingabe geändert. 'MessageBodyPart.attachFile (srcFile," application/zip "," base64 ");' nimmt nur einen Parameter in meinem Code. Und nach der Ausführung wird immer noch 'com.sun.mail.smtp.SMTPSendFailedException: 552-5.7.0 angezeigt. Diese Nachricht wurde blockiert, da ihr Inhalt ein Sicherheitsproblem von 552-5.7.0 bei 'transport.send (message)' darstellt – biz00ka

+0

Es gibt mehrere attachFile-Methoden. Der mit nur einem Parameter wählt den MIME-Typ und die Kodierung für Sie. Wenn Sie den MIME-Typ als Anwendung/Zip erzwingen möchten, benötigen Sie die Version mit drei Parametern. Und natürlich wird nichts davon die Sicherheitsbeschränkungen Ihres E-Mail-Dienstes umgehen, die Sie daran hindern, Zip-Dateien zu senden. Dazu müssen Sie mit Ihrem E-Mail-Dienstanbieter sprechen oder Ihre Daten auf eine andere Weise als eine angehängte Zip-Datei senden. –

Verwandte Themen