java - 如何使用 Apache Tika 通过 Apache Metadata 类提取 "From"、 "To"和 "Subject"字段?

标签 java apache apache-tika

我正在使用 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);

    }

    }

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

ExtractFromEmail.java:30: error: no suitable constructor found for Property(String) Property prop = new Property("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"); 行是无用且不正确的。

关于java - 如何使用 Apache Tika 通过 Apache Metadata 类提取 "From"、 "To"和 "Subject"字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43243930/

相关文章:

java - 将RTL支持添加到GitHub库吗?

AngularJS SSL .htaccess 问题

compiler-errors - Java新手,发现依赖项编译困难

apache - 无法识别的 SSL 消息,明文连接

java - 如何将 .doc 或 .docx 文件转换为 .pdf 文件?

.net - 如何在 .Net Core 上使用 Apache Tika?

java - Sphinx查询从mysql转换

java - 用新字符串替换字符串中的所有大写字母

java - Android:从全屏 Activity 返回后布局被破坏

Apache ProxyPass HTTPS 和带有 SNI 的远程服务器