magic_halli
Erfahrenes Mitglied
Hi,
ich lese mittels Javamail ein IMAP-Postfach aus und lasse mir u.a. den Mailtext (Content) jeder Mails ausgeben. Ich habe in meinem Code auch eine Unterscheidung nach "text/plain" und "multipart/*" Mails drin, sodass eigentlich von allen Mails der Mailtext angezeigt werden sollte!
Doch wenn eine Mail vom ContentType "multipart/MIXED" ist, wird mir kein Mailtext angezeigt! Wenn der ContentType hingegen bspw. "multipart/ALTERNATIVE" oder natürlich "text/plain" ist, dann wirds angezeigt! Das versteh ich nicht. Hier mal der entsprechende relevante Codeauszug:
Die Ausgabe hiervon sieht dann so aus, wenn´s bspw. "multipart/ALTERNATIVE" ist:
...und jetzt bei "multipart/MIXED":
Ich weiß nicht, warum sich mein Programm so verhält, wie beschrieben.
Was könnte falsch sein bzw. wie bekomme ich auch "multipart/MIXED" angezeigt?
Danke und Gruß
ich lese mittels Javamail ein IMAP-Postfach aus und lasse mir u.a. den Mailtext (Content) jeder Mails ausgeben. Ich habe in meinem Code auch eine Unterscheidung nach "text/plain" und "multipart/*" Mails drin, sodass eigentlich von allen Mails der Mailtext angezeigt werden sollte!
Doch wenn eine Mail vom ContentType "multipart/MIXED" ist, wird mir kein Mailtext angezeigt! Wenn der ContentType hingegen bspw. "multipart/ALTERNATIVE" oder natürlich "text/plain" ist, dann wirds angezeigt! Das versteh ich nicht. Hier mal der entsprechende relevante Codeauszug:
Java:
...
Message message[] = folder.getMessages();
for(int i=0;i<message.length;i++){ //jede Mail durchgehen
Message m = message[i];
System.out.println( "-----------------------\nNachricht: " + i );
System.out.println( "Von: " + Arrays.toString( m.getFrom()) );
System.out.println( "Betreff: " + m.getSubject() );
System.out.println( "Gesendet am: " + m.getSentDate() );
System.out.println( "ContentType: " + new ContentType(m.getContentType()) );
System.out.println( "Content: \n" );
//Mail ist eine einfache Text- bzw. HTML-Mail
if( m.isMimeType("text/plain") ){
//Ausgabe Mailtext
System.out.println( m.getContent() );
}
//Mail ist multipart-Mail
if( m.isMimeType("multipart/*") ){
Multipart mp = (Multipart) m.getContent();
//jeden Teil der Multipart abarbeiten
for( int j=0;j<mp.getCount();j++ ){
Part part = mp.getBodyPart(j);
String disposition = part.getDisposition();
if( disposition == null ){
MimeBodyPart mimePart = (MimeBodyPart) part;
if( mimePart.isMimeType("text/plain") ){
BufferedReader in = new BufferedReader( new InputStreamReader(mimePart.getInputStream()) );
for( String line; (line=in.readLine()) != null; ){
//Ausgabe Mailtext
System.out.println( line );
}
}
}else if( disposition.equalsIgnoreCase(Part.ATTACHMENT) ){
//Anhang wird in ein Verzeichnis gespeichert
saveFile(part.getFileName(), part.getInputStream());
}else if( disposition.equalsIgnoreCase(Part.INLINE) ){
//Anhang wird in ein Verzeichnis gespeichert
saveFile(part.getFileName(), part.getInputStream());
}
}
}
folder.close( false );
...
Code:
-----------------------
Nachricht: 0
Von: meier@xyz.de
Betreff: Anfrage Nr.0815/123
Gesendet am: Tue Mar 18 15:26:58 CET 2008
ContentType: multipart/ALTERNATIVE;
boundary=b1_98ae168089c721420d1c9730b0a991ae
Content:
Sehr geehrte Damen und Herren,
bla bla bla
Code:
-----------------------
Nachricht: 1
Von: schulze@xxx.de
Betreff: Anfrage 20.03.2008
Gesendet am: Thu Mar 20 13:09:30 CET 2008
ContentType: multipart/MIXED; boundary=b1_046818996b8df8691fadcac4e2061bff
Content:
Ich weiß nicht, warum sich mein Programm so verhält, wie beschrieben.
Was könnte falsch sein bzw. wie bekomme ich auch "multipart/MIXED" angezeigt?
Danke und Gruß