我有sendmail
文件,其中包含此脚本echo "sample message" | /usr/bin/swaks --to email@gmail.com
我想使用此代码从java运行它:
ProcessBuilder pb = new ProcessBuilder("sendmail");
Process p = pb.start()
但未发送电子邮件。什么是错的,我该如何解决这个问题?
编辑:正在运行./sendmail
,电子邮件将发送到我的邮件
答案 0 :(得分:1)
我认为问题是你的java应用程序在脚本完成之前就结束了。
试试这个:
ProcessBuilder pb = new ProcessBuilder("./sendmail.sh");
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String readline;
int i = 0;
while ((readline = reader.readLine()) != null) {
System.out.println(++i + " " + readline);
}
上面的代码应该打印出你可以帮助你调试的命令。它还具有阻塞的副作用,直到脚本完成。
如果这样做并且你不关心输出,你可以这样做:
ProcessBuilder pb = new ProcessBuilder("./test.sh");
Process p = pb.start();
p.waitFor();