java - Procmail 配方,管道到 Java 标准输入

标签 java pipe stdin procmail recipe

我正在尝试使用 procmail 对传入邮件运行一些自定义解析,并且想调用 java 程序来使用 |pipe 到 stdin 读取消息的 header 和正文。有很多使用 perl 和 python 过滤邮件的示例,但没有一个使用 java。作为一个起始示例,我的 procmail 配方:

:0 hbfW
|"/usr/bin/java -cp /root/parser HelloWorldApp"

我的 java 应用程序只是回显标准输入:

import java.io.*;
public class HelloWorldApp {
 public static void main(String[] args) {
 InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while(true){
    try {
        String inputStr = null;
        if((inputStr=bufReader.readLine()) != null) {
            System.out.println(inputStr);
        }
        else {
            break;
        }
    }
    catch (Exception e) {
       break;
    }
  }
 }
}

procmail 日志:

procmail: Executing "/usr/bin/java -cp /root/parser HelloWorldApp"
/bin/sh: /usr/bin/java HelloWorldApp: No such file or directory
procmail: Error while writing to "/usr/bin/java HelloWorldApp"
procmail: Rescue of unfiltered data succeeded

1)我是否创建了正确的食谱来将数据传输到java? 2) 由于我仍然希望 procmail 处理传递,因此我的配方使用 (f) 标志。但是如何将 java 程序创建的结果发送回 procmail?标准输出?

最佳答案

删除“/usr/bin/java -cp/root/parser HelloWorldApp”两边的引号。

来源:http://www.linfo.org/pipe.html

关于java - Procmail 配方,管道到 Java 标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7368198/

相关文章:

java - Android 版 KYCircleMenu

java - 通过 spring 表单标签创建 select 时出现错误 "java.lang.ClassNotFoundException: org.springframework.core.enums.LabeledEnum"

java - Android内部类内存泄漏和上下文泄漏?

linux - "less"命令如何获取标准输入?

node.js - Ffmpeg:如何同时捕获音频和元数据

Python,伪造标准输入

c++ - 管道 cout 干扰 cerr

java - 禁用 mySQL RDS 客户端身份验证

kotlin - 如何从 kotlin 中的 stdin 读取所有行?

bash - 通过命令重定向终端标准输出