我使用MailEnable设置了POP3邮件服务器。我可以使用Mozilla Thunderbird通过此服务器发送和接收电子邮件,但是当通过JavaMail API阅读包含多部分内容的邮件(在这种情况下是带有html内容的邮件)时,我遇到了一个奇怪的问题。从输入流返回的数据总是只有两个带尾随周期的CR / LF! 以下是我的消息处理代码的相关部分:
for (Message m : messages) {
if (m.isMimeType("multipart/*")) {
System.out.println("Process multipart/* Nachricht");
Multipart mp = (Multipart) m.getContent();
Part part = mp.getBodyPart(0);
System.out.println(part.getContent());
}
}
只有一个Multipart,所以我直接访问第一个元素。 Multipart中也没有嵌套部件。我不知道是什么导致了这个问题而且让我生气了一个星期,所以如果有人能在这个问题上帮助我,我会很高兴。
谢谢, fredddmadison
答案 0 :(得分:1)
而不是这个
Part part = mp.getBodyPart(0); // What if there's more parts? Or empty parts?
System.out.println(part.getContent()); // No check for empty String?
我建议尝试这个
mp.writeTo(System.out); // Use the optimized write.
System.out.flush(); // Flush the outputstream.
另外,你确定没有收到空消息吗?
答案 1 :(得分:0)
我发现了这个问题。这是因为我在我的类路径上有两个不同的JavaMail API实现(apache geronimo 1.4随EclipseLink一起提供,以及JavaMail API参考实现,1.5.1)。我现在已经从类路径中删除了geronimo实现,它按预期工作。