我想使用JavaMail来解析一个.mbox文件,就像这个http://mail-archives.apache.org/mod_mbox/lucene-java-user/201210.mbox一样。
我想要做的是:
Session session = Session.getDefaultInstance(new Properties());
Store store = session.getStore("Here should go the .mbox file");
store.connect();
Folder folder = store.getFolder(server);
folder.open(Folder.READ_ONLY);
...
事实证明这是错误的。任何建议都会很有帮助。
提前谢谢你。
更新:工作示例
public class MBoxFileReader implements MessageReader {
private final Path path; // Path to .mbox file
public MBoxFileReader(Path path) {
this.path = path;
}
@Override
public Message[] readMessages() {
Message[] messages = new Message[0];
URLName server = new URLName("mbox:" + path.toString());
Properties props = new Properties();
props.setProperty("mail.mime.address.strict", "false");
Session session = Session.getDefaultInstance(props);
try {
Folder folder = session.getFolder(server);
folder.open(Folder.READ_ONLY);
messages = folder.getMessages();
}
catch (Exception e) {
e.printStackTrace();
}
return messages;
}
}
发布于 2013-11-07 03:26:07
您可以使用JavaMail mbox Store,但您需要自己构建它。
发布于 2018-03-20 21:42:33
这可以使用Apache Mime4j来完成:
CharsetEncoder ENCODER = Charset.forName("UTF-8").newEncoder();
final File mbox = new File(mboxPath);
for (CharBufferWrapper message : MboxIterator.fromFile(mbox).charset(ENCODER.charset()).build()) {
System.out.println(message);
}
您需要:
<dependencies>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-mime4j</artifactId>
<version>0.8.1</version>
<type>pom</type>
</dependency>
</dependencies>
https://stackoverflow.com/questions/19816556
复制相似问题