# Javamail: Content von multipart/MIXED wird nicht angezeigt



## magic_halli (27. März 2008)

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:

```
...
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 );
...
```
Die Ausgabe hiervon sieht dann so aus, wenn´s bspw. "multipart/ALTERNATIVE" ist:

```
-----------------------
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
```
...und jetzt bei "multipart/MIXED":

```
-----------------------
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ß


----------



## magic_halli (28. März 2008)

...keiner ne Idee? 

Wie macht ihr das, wenn ihr ein IMAP-Konto auslest und euch den Inhalt der Mail (besonders bei multipart) darstellen oder speichern wollt?


----------

