2017-05-19 5 views
-1

이와 같은 특정 폴더에서 읽지 않은 이메일을 읽습니다. 메시지 내용 유형이 (텍스트/html)입니다. charset = iso-8859-1. 어떻게 콘텐츠를 문자열로 가져올 수 있습니까? 나는이 [email protected]type이 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

'메시지'는 어디에서 왔습니까? 설명서를 읽었습니까? – Henry

+0

내 Outlook에서 일반 텍스트 메시지입니다. – Jerry

답변

0

텍스트처럼 뭔가를 받고 오전 toString을 수행 할 때/일반 알 수없는 유형과의 InputStream으로오고 있었다. 이것은 나를 위해 일했다

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; 
    }