Java SendMail 在服务器停止后发送邮件

标签 java process sendmail processbuilder

我有一个 jar 的 UI 包装器。当 UI 触发事件“submitButton”时,将调用以下方法来执行它。 jar 在单独的进程中执行,但仅在调用进程(即 UI 服务器)停止后才会发送邮件。知道为什么吗? (从 cmd 行执行时,jar 工作正常)。

public static String doSendMail(){
        // Run a java app in a separate system process
        Process process;
        try {
            ProcessBuilder pb = new ProcessBuilder("java",  "-jar", "SendMail.jar",  ">>", "test.log");
            process = pb.start();
            InputStream in = process.getInputStream();
            InputStream err = process.getErrorStream();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "Success";

    }

最佳答案

几个问题:>> 是 shell 重定向。您直接运行子进程,因此它可能被忽略。此外,您从未处理过从进程写入的输出,因此它可能会被缓冲并阻塞进程,直到 UI 结束。

关于Java SendMail 在服务器停止后发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410905/

相关文章:

java - 返回的 JSONObject 始终为 null

c - 我如何知道在调用 waitpid() 后我的子进程实际上已被收获?

bash - 如何等待脚本生成的所有子(和孙子等)进程

php - 使用 mail() 导致 Nginx 中的 504 网关超时

sendmail - mailx 和 sendmail 之间的区别?

java - 连接池监控

java - 如何从两个整数中随机选择一个?

java - logback:AsyncAppender 比同步 FileAppender 花费更多时间

process - 如何着手新项目

php - 程序员可以使用 PHP 发送电子邮件的所有方式有哪些?