【问题标题】:Help when SMTP server hangs when sending emails from Java从 Java 发送电子邮件时 SMTP 服务器挂起时的帮助
【发布时间】:2023-04-05 10:12:01
【问题描述】:

我使用外部邮件服务器发送 SMTP 邮件,该服务器实际上超出了我的控制范围。

此邮件服务器最近几次出现问题,导致我的 Java (Struts/Spring) 应用在等待邮件服务器回复时完全挂起。

我正在使用 Spring org.springframework.mail.javamail.JavaMailSender 来发送邮件。

当外部邮件服务器出现问题时,以下行会冻结 ma​​ilEngine.send(mailMessage);

我不介意有时无法发送电子邮件,但我如何才能阻止它在等待 SMTP 服务器回复时冻结我的应用程序?

Java 有什么好的邮件队列解决方案吗?

【问题讨论】:

    标签: java email smtp queue


    【解决方案1】:

    您可以在后台线程中发送电子邮件。

    【讨论】:

      【解决方案2】:

      将您的调用线程化到 SMTP 服务器。您可以使用ExecutorService(存在各种实现)并放入Runnables,以便在稍后阶段(带外)执行。这种方法的优点是您不必显式地编写线程模型。

      如果您在提交时从 Executor 收集 Future 对象,您可以在适当的超时时间调用 get() 并在超时时取消(并且可能重新提交/重试)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 2021-10-01
        • 2017-01-30
        • 2011-04-08
        相关资源
        最近更新 更多