如何使用 Apache Tika 通过 Apache 元数据类提取"From"、"To"和"Subject"字段?



我正在使用Apache Tika库,特别是元数据类,来从Outlook Exchange文件(电子邮件文件,即.msg文件(中提取"发件人","收件人"和"主题"字段。

我知道我需要使用 Metadata 类,但我在使用它时遇到了一点麻烦。

这是我到目前为止的代码:

import java.io.File;
import java.io.*;
import java.util.Arrays;
import org.apache.tika.Tika;
/* more tika imports */
public class ExtractFromEmail {
   public static void main(final String[] args) throws IOException, TikaException , SAXException {
    File file = new File("message_1980.msg");
    AutoDetectParser parser = new AutoDetectParser();
    BodyContentHandler handler = new BodyContentHandler(-1);
    Metadata tikaMetadata = new Metadata();
    Property prop = new Property("MESSAGE_FROM");
    String fromField = tikaMetadata.get(prop); //  USE THIS PATTERN
    InputStream input = TikaInputStream.get(file, tikaMetadata);
    parser.parse(input, handler, tikaMetadata, new ParseContext());
    String other = tikaMetadata.MESSAGE_FROM ; 

     System.out.println(fromField);
    }
    }

运行代码时出现以下错误:

提取自电子邮件.java:30:错误:找不到合适的构造函数 属性(字符串( 属性属性 = 新属性("Message.MESSAGE_FROM"(;

谢谢

我用 tika-1.14 尝试这个:

File file = new File("src/main/resources/unicode.msg");
AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata tikaMetadata = new Metadata();
InputStream input = TikaInputStream.get(file, tikaMetadata);
parser.parse(input, handler, tikaMetadata, new ParseContext());
String messageFrom = tikaMetadata.MESSAGE_FROM;
String fromField = tikaMetadata.get(messageFrom);
System.out.println(fromField);

和作品。您的问题是您在解析消息之前尝试提取元数据。此外,我认为Property prop = new Property("MESSAGE_FROM");行是无用和不正确的。

相关内容

  • 没有找到相关文章

最新更新