0

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

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

而我的 java 应用程序只是 echo 的标准输入:

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?标准输出?

4

2 回答 2

1

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

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

于 2011-09-09T23:51:07.973 回答
0

您的配方上的“过滤器”标志指定管道将读取标准输入上的消息并在标准输出上写回(可能未更改)消息,这将替换原始消息。

由于 Jake223 已经回复,命令两边的引号不正确,应该删除。但是,错误消息看起来并不真正对应于该特定错误。

于 2011-09-12T11:56:36.380 回答