Mist Java Mail: Bild-Anhang extrahieren

chickenwings

Erfahrenes Mitglied
Hallo,

war nun heilfroh, dass ich es geschafft habe, einen IMAP Server anzuzapfen, die Emails der Inbox zu lesen und sogar Attachments zu extrahieren.
Jetzt teste ich das ganze nochmal mit einem JPG und siehe da, es funktioniert nicht. Offensichtlich müssen Bilder anders behandelt werden, als Textdateien.

so mache ich es bisher:
Code:
mp = (MimeMultipart)message.getContent();
	for (int i=0; i < mp.getCount(); i++) {
		BodyPart part = mp.getBodyPart(i);
		String disposition = part.getDisposition();
		if (disposition != null && (disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE))) {
			saveFile(part.getFileName(), part.getInputStream());
		}
       }
diesen Code findet man zu hauf im Netz. Allerdings sind mir Informationen über Behandlung von Bildern noch nicht untergekommen.
Hat jemand schon mit diesem Problem zu tun gehabt, so dass er mir einen Tipp geben könnte?

Vielen Dank,
chickenwings
 
Hi,

also Mist ist Java Mail ganz sicher nicht. Meistens macht der Programmierer Mist :) Im Gegensatz zu Text werden Bilder im Base64-Format rübergeschickt.
 
Ok,

natürlich ist das keine mist, aber manchmal steht man eben auf dem schlauch :-D.
Aslo im Base64 Format? Was heisst das jetzt für meine Funktion?
Mehr als die Rohdaten habe ich ja nicht, die ich in meine Datei schreibe. Muss das jetzt konvertiert werden oder reicht es Meta Daten zu setzen?

chickenwings
 
Also,

Base64 als Hinweis war ja schon mal ganz gut.
Habe mal folgendes probiert:
Code:
try {	
	Base64InputStream bis = new Base64InputStream(inputStream);
	OutputStream out = new FileOutputStream(file);
	byte[] b = new byte[ size ];
	for ( int n; ( n = bis.read( b )) != -1; ){
		out.write( b, 0, n );
	}
} catch (IOException e) {
	e.printStackTrace();
}

Das Ergebnis ist das gleiche, es wird zwar ein Datei mit dem korrekten Namen erzeugt, die ist allerdings nur kb gross und angezeigt werden kann sie auch nicht.
Geht denn mein Versuch überhaupt in die richtige Richtung?

Danke,
chickenwings
 
Zurück