2015-08-14 135 views
0
Properties props = new Properties(); 
props.setProperty("mail.store.protocol", "imaps"); 
try { 
Session session = Session.getInstance(props, null); 
Store store = session.getStore(); 
store.connect("imap.gmail.com", "xxx", "xxx"); 
Folder inbox = store.getFolder("INBOX"); 
inbox.open(Folder.READ_ONLY); 
Message[] messages = inbox.getMessages(); 
for (int i = messages.length;i>=0; i--) { 
Message message =messages[i]; 

System.out.println("Text: " + message.getContent().toString()); 
} 

我能閱讀電子郵件,我試圖讓電子郵件內容爲每個email.However的getContent方法返回垃圾的值,例如電子郵件內容:(文字:javax.mail.internet.MimeMultipart @ 17ff24f)。 如何獲得完整的電子郵件內容。請幫忙。無法讀取使用Java

+0

看來你正在獲得一個緩衝的郵件內容流。 –

+0

http://stackoverflow.com/questions/13474705/reading-body-part-of-a-mime-multipart –

回答

1

message.getContent()的調用不返回「垃圾值」,它只返回不能直接轉換爲String值的內容。

這是因爲它是類MimeMultipart的一個對象。這意味着您正在閱讀的電子郵件由多個「部分」組成。您可以向下轉換的message.getContent()結果到MimeMultipart變量和分析:

MimeMultipart multipart = (MimeMultipart) message.getContent(); 
System.out.println("This message consists of " + multipart.getCount() + " parts"); 
for (int i = 0; i < multipart.getCount(); i++) { 
    // Note we're downcasting here, MimeBodyPart is the only subclass 
    // of BodyPart available in the Java EE spec. 
    MimeBodyPart bodyPart = (MimeBodyPart) multipart.getBodyPart(i); 

    System.out.println("Part " + i + " has type " + bodyPart.getContentType()); 
    System.out.println("Part " + i " + has filename " + bodyPart.getFileName()); // if it was an attachment 
    // So on, so forth. 
} 

關於如何分析消息的部分細節見Javadoc of MimeBodyPart