大家好:)我有解決郵件從POP3服務器的麻煩。最後我想獲得附件。郵件是多部分的,但到目前爲止,我只設法獲得一小部分郵件。Java郵件:只檢索郵件的一部分/解析錯誤/格式錯誤的郵件
這裏是原始電子郵件,如由前景(+一個文件附後)讀:
ID-G1619161
P.S. : This is an automated email.
Write back to [email protected]
Post-scriptum :
This message is confidential. [...]
下面是一些代碼:
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
Message message = messages[i];
System.out.println("message : " + message);
System.out.println("***");
IOUtils.copy(message.getInputStream(),System.out);
System.out.println("***");
System.out.println("message.getContentType : " + message.getContentType());
Multipart multiPart = (Multipart) message.getContent();
System.out.println("multiPart : " + multiPart);
int numberOfParts = multiPart.getCount(); // line A
}
此打印:
message : [email protected]f296
***
P.S. : This is an automated email.***
message.getContentType : multipart/mixed; boundary="qMm9M+Fa2AknHoGS"
multiPart : [email protected]
並投在A行(multiPart.getCount
!):
javax.mail.MessagingException: Unexpected response: Write back to [email protected]
我對此的看法是郵件被格式化爲一種奇怪的方式,javax.mail
未識別,因爲getCount
正在嘗試讀取其餘郵件。
我甚至可以得到整個消息! (試圖做到這一點:IOUtils.copy(message.getInputStream(),System.out);
)
你會如何調試?另外,如果您知道一種方式將整個郵件作爲字符串(包括附件),我很樂意與您分享。我準備手工解析這個問題。
問候
非常感謝,您維護的實現像一個魅力:) message.getContent給了我一個字符串,而不是一個多部分,但字符串完全符合我所需要的。 – BenoitParis
@BenoitParis你能告訴我你是如何解析從'message.getContent'方法返回的字符串的?我知道這是舊的,但我無法找到任何網絡上解決這個問題,我需要它返回一個Multipart對象,或者我需要解析字符串。 – Shahe
如果您確實有多部分信息,並且沒有從getContent獲取Multipart對象,請發佈一個包含詳細信息的新問題。 –