2016-07-29 6 views
0

Diese Frage bezieht sich auf Java Mail-API und Google Mail-Konto.Wie kann ich den E-Mail-Text abrufen, ohne die Anhangsdatei herunterzuladen?

Ich möchte den Nachrichtenteil aus den Gmail-E-Mails anzeigen, indem ich die Anhangsdatei ignoriere. Mein Code funktioniert ordnungsgemäß, wenn keine Anhänge vorhanden sind, aber wenn es sich um E-Mails mit Anhang handelt, gibt es keine Ausgabe.

Ich möchte nur den Nachrichtentext aus der E-Mail angezeigt werden.

Vielen Dank im Voraus.

+0

Fügen Sie Ihren Code hinzu, der ohne Anhang funktioniert, und wenn Sie Protokolle in Fall mit Anhang haben, fügen Sie es auch hinzu. – Hrabosch

+0

Hier gehts http://pastebin.com/vtKcas0K –

+0

Ok, und das Problem ist teilweise von der Linie 76., ist das nicht? Hast du versucht es zu debuggen? Weißt du, was dort passiert? Ich würde es versuchen, aber diese Informationen sollten von Ihnen in Ihrer Frage zur Verfügung gestellt werden;) Ich werde versuchen, es zu debuggen, wenn ich mehr Freizeit haben werde. – Hrabosch

Antwort

0

Dies ist nur die erste Schuss, ohne zu versuchen, Ihren Code zu debuggen, aber man könnte versuchen original Oracle suggestion zu folgen:

private boolean textIsHtml = false; 

    /** 
    * Return the primary text content of the message. 
    */ 
    private String getText(Part p) throws 
       MessagingException, IOException { 
     if (p.isMimeType("text/*")) { 
      String s = (String)p.getContent(); 
      textIsHtml = p.isMimeType("text/html"); 
      return s; 
     } 

     if (p.isMimeType("multipart/alternative")) { 
      // prefer html text over plain text 
      Multipart mp = (Multipart)p.getContent(); 
      String text = null; 
      for (int i = 0; i < mp.getCount(); i++) { 
       Part bp = mp.getBodyPart(i); 
       if (bp.isMimeType("text/plain")) { 
        if (text == null) 
         text = getText(bp); 
        continue; 
       } else if (bp.isMimeType("text/html")) { 
        String s = getText(bp); 
        if (s != null) 
         return s; 
       } else { 
        return getText(bp); 
       } 
      } 
      return text; 
     } else if (p.isMimeType("multipart/*")) { 
      Multipart mp = (Multipart)p.getContent(); 
      for (int i = 0; i < mp.getCount(); i++) { 
       String s = getText(mp.getBodyPart(i)); 
       if (s != null) 
        return s; 
      } 
     } 

     return null; 
    } 

Ich denke, es ist Problem, das Sie von ihm und Multipart-Inhalt zu erhalten versuchen. Der obige Code funktionieren nur, wenn:

Sie können die getText Methode mit einem Message-Objekt aufrufen (das ist ein Part).

+0

Wo füge ich diesen Code in meinen vorhandenen Code ein? Ich habe versucht, es hinzuzufügen, aber Kompilierzeit Fehler zu bekommen? –