我有一个包含此脚本sendmail
的echo "sample message" | /usr/bin/swaks --to email@gmail.com
文件,我想使用以下代码从Java运行它:
ProcessBuilder pb = new ProcessBuilder("sendmail");
Process p = pb.start()
但电子邮件未发送。怎么了,我该如何解决?
编辑:正在运行
./sendmail
正在工作,并且电子邮件已发送到我的邮件 最佳答案
我认为问题在于脚本完成之前您的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();