使用java解析本地邮件文件中的消息

问题描述 投票:0回答:1

我想使用 java 解析和过滤我的 local 收件箱(例如:thunderbird)中的消息。比如:

 java MyProgram <  ~/.thunderbird/xxxxx.default/Mail/yyyyy/Inbox > statistics.txt

据我所知,有 jakarta mail api 及其实现( org.eclipse.angus ),但我看到的所有示例都使用 remote 收件箱,使用

import javax.mail.Session;
import javax.mail.Store;

那么有没有一个 API(在雅加达邮件中?)可以解析这样的 local 平面文件并让我迭代所有消息。比如:

ParserSomething localbox  = ParserSomething.of(System.in);
Iterator<Message> iter = localbox.iterator();
while(iter.hasNext()) {
  Message msg = iter.next();
  System.err.println(msg.getTitle());
  for(Attachment a : msg.getAttachements()) {
      try(InputStream in = a.getInputStream() ) {
        (...)
       }
   } 
}

java email jakarta-mail local
1个回答
0
投票

好的,我得到了答案在这里

使用org.apache.james.mime4j

import org.apache.james.mime4j.parser.*;
import org.apache.james.mime4j.stream.*;
import org.apache.james.mime4j.*;
public class ScanMail extends AbstractContentHandler {

@Override
public void field(Field field) throws MimeException {
    System.out.println(field);
    }

public static void main(String[] args) {
    try {
        final ContentHandler handler = new ScanMail();
        final  MimeConfig config = MimeConfig.DEFAULT;
        final MimeStreamParser parser = new MimeStreamParser(config);
        parser.setContentHandler(handler);
        parser.parse(System.in);
        }
    catch(Throwable err) {
        err.printStackTrace();
        }
    }
};

编译:

wget -O work/apache-mime4j-core-0.8.11.jar  "https://repo1.maven.org/maven2/org/apache/james/apache-mime4j-core/0.8.11/apache-mime4j-core-0.8.11.jar"
wget -O work/commons-io-2.18.0.jar  "https://repo1.maven.org/maven2/commons-io/commons-io/2.18.0/commons-io-2.18.0.jar"
javac -d work -cp work/apache-mime4j-core-0.8.11.jar ScanMail.java
echo | java -cp work:work/apache-mime4j-core-0.8.11.jar:work/commons-io-2.18.0.jar ScanMail
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.