2017-04-21 2 views
0

Ich versuche, den E-Mail-Nachrichtentext mithilfe von Gmail-Java-APIs abzurufen. Ich bekomme alle Felder einschließlich to, from, subject.Kann der E-Mail-Text, der Text oder HTML-Inhalt enthält, nicht mit der Gmail Java API abgerufen werden?

Aber ich bin nicht in der Lage die Textkörper, auch html Körper der E-Mail hier zu bekommen, ist mein Code-Fragment:

List<MessagePart> parts = message.getPayload().getParts(); 
      StringBuilder textSb = new StringBuilder(); 
      StringBuilder htmlSb = new StringBuilder(); 
      for (MessagePart part : parts) { 
       if (part.getMimeType().equalsIgnoreCase("text/plain")) { 
        try { 
         textSb.append(new String(Base64.getDecoder().decode(part.getBody().getData()), "UTF-8")); 
        } catch (UnsupportedEncodingException e) { 
         e.printStackTrace(); 
        } 
       } 

       if (part.getMimeType().equalsIgnoreCase("text/html")) { 
        try { 
         htmlSb.append(new String(Base64.getDecoder().decode(part.getBody().getData()), "UTF-8")); 
        } catch (UnsupportedEncodingException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 

Ein Text-Schnipsel kurzer E-Mail Körper kann mit folgenden Verfahren erhalten werden (aber nicht voll Körper):

Aber das ist nicht genug in meinem Fall brauche ich ganzen Körperinhalt.

Während über MessageParts in oben Schleife in Debugger Iterieren Ich erhalte zwei Teile zuerst mit MIME-Typ multipart/alternative und andere MIME-Typ application/pdf die für PDF-Dateianhang ist.

Was soll ich tun, um den Inhalt der E-Mail zu erhalten?

Antwort

0

Nach der Suche mehr, fand ich, dass die Details im ersten Teil der MessageParts Liste von Message Objekt sind. In diesem ersten Teil erhalten Sie die Liste der MessageParts, die den Körper der E-Mail enthält, d. H. Textinhalt, HTML-Inhalt:

List<MessagePart> parts = message.getPayload().getParts().get(0).getParts(); 
    StringBuilder mixContent = new StringBuilder(); 

    for (MessagePart part : parts) { 
        if (part.getMimeType().equalsIgnoreCase("text/plain")) { 
         try { 
          mixContent.append(new String(Base64.getUrlDecoder().decode(part.getBody().getData()), "UTF-8")); 
          continue; 
         } catch (UnsupportedEncodingException e) { 
          e.printStackTrace(); 
         } 
        } 
        if (part.getMimeType().equalsIgnoreCase("text/html")) { 
         try { 
          mixContent.append(new String(Base64.getUrlDecoder().decode(part.getBody().getData()), "UTF-8")); 
         } catch (UnsupportedEncodingException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
Verwandte Themen