我有一个包含此脚本sendmailecho "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();

09-26 00:56
查看更多