通过JavaMail读取POP3消息只返回尾随句点,而不是内容

时间:2013-12-08 11:49:44

标签: java javamail pop3 multipart

我使用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

2 个答案:

答案 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实现,它按预期工作。