javamail: anhang downloaden, anzeigen

boelkstoff

Erfahrenes Mitglied
Hallo!

Ich arbeite gerade mit JavaMail.
von Sun gibt es auch eine super Anleitung dafür aber leider nicht wie ich den Anhang einer Email mit jsp/servlet darstelle bzw. zum download anbiete


Code:
Message emessage[] = folder.getMessages();
Message email = emessage[0];
Multipart multipart = (Multipart)email.getContent();

        for (int i=0; i<multipart.getCount(); i++) {
          Part part = multipart.getBodyPart(i);

          String disposition = part.getDisposition();

          if ((disposition != null) && 
              ((disposition.equals(Part.ATTACHMENT) || 
               (disposition.equals(Part.INLINE))))) {
            //part.getFileName() 
           //part.getInputStream()
           //part.getContentType() 
          }
        }

Kann mir jemand sagen wie ich jetzt den Anhang darstelle bzw. einen link mache zum "downloaden! Leider kenne ich mich mit Stream usw. nicht aus!

Wer kann mir bitte helfen

Vielen Dank
 
Zuletzt bearbeitet von einem Moderator:
Servus!

Versuchs mal so:

Schreib doch den Anhang erstmal auf die Platte des Servers, danach kannst du darauf verlinken ...

Code:
 throws IOException, ServletException ---
 ...
 
 if ((disposition != null) && 
               ((disposition.equals(Part.ATTACHMENT) || 
                (disposition.equals(Part.INLINE))))) {
            File f = new File("/mails/save/part.getFileName() ");
 FileOutputStream fos = new FileOutputStream(f);
InputStream is = part.getInputStream();
 
 byte[] buffer = new byte[1024];
 int bytesRead = 0;
 
 while ( (bytesRead = is.read(buffer))!= -1){
        fos.write(buffer,0,bytesRead );
 }
 
fos.close();
is.close();
 
 //... nun Links zur Datei zusammenbasteln ...
 
            //part.getContentType() 
           }
 
Viele Dank,
das werd ich morgen gleich mal ausprobieren.
danke

Kennst Du eine gute Seite wo Java und Streams/reader erklärt wird?
 
Also dieser Teil funktioniert bei mir so nicht, und dürfte auch allgemein nicht gehen:

Code:
byte[] buffer = new byte[1024];
int bytesRead = 0;

while ( (bytesRead = br.read(buffer))!= -1){
       fos.write(buffer);
}

da der Teil "br.read(buffer)" keine Bytes lesen kann, aber "fos.write(buffer)" nur Bytes ließt.

Vielleicht hab ich auch irgendwo einen Denkfehler drin, drum bitte ich um Aufklärung.
 
Zurück