我正在尝试使用 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?标准输出?