【发布时间】:2013-07-24 09:18:53
【问题描述】:
大家好 :) 我在解析来自 pop3 服务器的邮件时遇到问题。最后我想得到附件。邮件是多部分的,但到目前为止我只收到了一小部分邮件。
这是 Outlook 读取的原始电子邮件(+一个附件):
ID-G1619161
P.S. : This is an automated email.
Write back to blah@blah.com
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 : org.apache.geronimo.javamail.store.pop3.message.POP3Message@79f6f296
***
P.S. : This is an automated email.***
message.getContentType : multipart/mixed; boundary="qMm9M+Fa2AknHoGS"
multiPart : javax.mail.internet.MimeMultipart@bc92535
并在 A 行抛出 (multiPart.getCount!):
javax.mail.MessagingException: Unexpected response: Write back to blah@blah.com
我对此的看法是邮件的格式很奇怪,javax.mail 无法识别,因为getCount 正在尝试阅读邮件的其余部分。
我什至可以得到整个消息! (尝试这样做:IOUtils.copy(message.getInputStream(),System.out);)
你会如何调试这个?另外,如果您知道一种将整个邮件作为字符串(包括附件)的方法,我会很高兴您分享它。我准备手动解析这个。
最好的问候
【问题讨论】:
标签: java jakarta-mail pop3 multipart