Mime4j:DefaultMessageBuilder无法解析MBOX内容 [英] Mime4j: DefaultMessageBuilder fails to parse mbox content
问题描述
我已经下载 mime4j
从0.8.0快照颠覆
和建造它行家
。
我生成相关的罐子可以发现 rel=\"nofollow\">。
现在我尝试解析的从玩具MBOX文件 mime4j
测试。
我用这个<一个href=\"http://svn.apache.org/repos/asf/james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/mbox/IterateOverMbox.java\"相对=nofollow>样本code 。简述:
最后文件MBOX =新的文件(C:\\\\ mbox.rlug);
诠释计数= 0;
对于(CharBufferWrapper消息:MboxIterator.fromFile(MBOX).charset(EN codeR.charset())建立()){
的System.out.println(messageSummary(message.asInputStream(EN codeR.charset())));
算上++;
}
的System.out.println(发现+数+信息);
+
私有静态字符串messageSummary(InputStream的messageBytes)抛出IOException异常,MimeException {
MessageBuilder建设者=新DefaultMessageBuilder();
消息消息= builder.parseMessage(messageBytes);
返回的String.format(\\ n消息%S \\ n+
通过发送:\\ t%S \\ n+
到:\\ t%S \\ n,
message.getSubject(),
message.getSender(),
message.getTo());
}
输出是:
空为:通过发送邮件空空
空为:通过发送邮件空空
空为:通过发送邮件空空
空为:通过发送邮件空空
空为:通过发送邮件空空
找到5的消息
块引用>有确实的消息5,但为什么所有字段为空?
解决方案我发现这个问题。
DefaultMessageBuilder
未能解析了Windows行分隔符\\ r \\ MBOX文件ñ
。
当使用UNIX行分隔符替换它们\\ n
解析工作。这是一个关键问题,因为MBOX文件从
的Gmail
使用\\ r \\ n
。下载p>I've downloaded
mime4j
0.8.0 snapshot fromsubversion
and built it withmaven
. The relevant jars I generated can be found here.Now I try to parse a toy mbox file from
mime4j
test.I use this sample code. Briefly:
final File mbox = new File("c:\\mbox.rlug"); int count = 0; for (CharBufferWrapper message : MboxIterator.fromFile(mbox).charset(ENCODER.charset()).build()) { System.out.println(messageSummary(message.asInputStream(ENCODER.charset()))); count++; } System.out.println("Found " + count + " messages");
+
private static String messageSummary(InputStream messageBytes) throws IOException, MimeException { MessageBuilder builder = new DefaultMessageBuilder(); Message message = builder.parseMessage(messageBytes); return String.format("\nMessage %s \n" + "Sent by:\t%s\n" + "To:\t%s\n", message.getSubject(), message.getSender(), message.getTo()); }
The output is:
Message null Sent by: null To: null
Message null Sent by: null To: null
Message null Sent by: null To: null
Message null Sent by: null To: null
Message null Sent by: null To: null
Found 5 messages
There are indeed 5 messages, but why are all fields null?
解决方案I found the problem.
DefaultMessageBuilder
fails to parse mbox files that have windows line separator\r\n
. When replacing them with UNIX line separator\n
the parsing works.This is a critical issue, since the mbox files downloaded from
Gmail
use\r\n
.这篇关于Mime4j:DefaultMessageBuilder无法解析MBOX内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!