2017-05-19 2 views
-1

Je lis des emails non lus à partir d'un dossier spécifique comme celui-ci. Le type de contenu du message est text/html; jeu de caractères = iso-8859-1. Comment puis-je obtenir le contenu en tant que chaîne? Quand je fais un toString je reçois quelque chose comme ça [email protected]Lire le contenu de l'e-mail lorsque le type est text/html; charset = iso-8859-1

public Message[] fetchMessages(String host, String user, String password,String folder, boolean read) throws IOException { 
      try { 
       Properties properties = new Properties(); 
       properties.put("mail.store.protocol", "imaps"); 

       Session emailSession = Session.getDefaultInstance(properties); 
       Store store = emailSession.getStore(); 
       store.connect(host, user, password); 

       Folder folderToRead = store.getFolder(folder); 
       folderToRead.open(Folder.READ_WRITE); 
       Flags seen = new Flags(Flags.Flag.SEEN); 
       FlagTerm unseenFlagTerm = new FlagTerm(seen, read); 
       Message messages[] = folderToRead.search(unseenFlagTerm); 
       System.out.println(messages.length); 
       for(Message message : messages){ 
        System.out.println(getMessageContent(message)); 
       } 
    } 
public getMessageContent(Message message){ 
     String result = ""; 
     if (message.isMimeType("text/html")) { 
      // My message type is coming as text/html 
      result = message.getContent().toString(); 
     } 
     else if (message.isMimeType("text/plain")) { 
      result = message.getContent().toString(); 
     } 
     return result; 

} 
+0

D'où vient «Message»? Avez-vous lu sa documentation? – Henry

+0

C'est un message texte clair dans mes perspectives. – Jerry

Répondre

0

text/plain est un type inconnu et venait comme un InputStream. Cela a fonctionné pour moi

private static String getTextFromMessage(Message message) throws IOException, MessagingException { 
     String result = ""; 
     if (message.isMimeType("text/plain")) { 
      result = message.getContent().toString(); 
     } else if (message.isMimeType("multipart/*")) { 
      MimeMultipart mimeMultipart = (MimeMultipart) message.getContent(); 
      result = getTextFromMimeMultipart(mimeMultipart); 
     } 
     else{ 
      StringWriter writer = new StringWriter(); 
      IOUtils.copy(message.getInputStream(), writer, "UTF-8"); 
      result = writer.toString(); 
     } 
     return result; 
    }