gpt4 book ai didi

Java Mail 代码部署到 Jelastic 时失败

转载 作者:行者123 更新时间:2023-12-01 13:43:59 26 4
gpt4 key购买 nike

我有一个运行动态 Web 项目的 Tomcat/Eclipse。这包括一个已知的好的 .war 作为它的主要代码库。邮件.jar 是mail.1.4.5.jar。

在本地使用时,如果配置正确,该设置可以通过测试毫无问题地发送电子邮件。它可以传送到各种端口和两个截然不同的 SMTP 服务器。但当部署到 Jelastic 时,该应用程序无法发送邮件。

我可以列出错误,有好几个,包括有关运输问题的报告。可能提供一些答案的关键错误是,当 Jelastic 部署上的 Java Mail 配置为端口 25 时,应用程序将邮件报告为已送达。这适用于两台服务器。但邮件始终没有到达。我还检查了垃圾邮件,以确保邮件没有被反垃圾邮件捕获。

问题似乎相当狭窄 - 只有端口 25 正在处理邮件传递,并且 Java Mail 认为它已经成功。但邮件未到达的原因有很多,我不知道从哪里开始,或者在某些情况下,例如捕获出站邮件,如何调试。

这个问题可能与,

Grails mail delivery works fine locally

但如果这是同一个问题,那么问题是 Java 范围内的,而不仅限于 Grails。

最佳答案

这个问题的子结构可能比 Java 更广泛,它可能适用于所有 Jelastic 部署。但我将介绍 Java。

第一步应该是检查应用程序的依赖关系,正如 OP 链接到的帖子中所解释的那样。 OP 解释说他们的应用程序正在进行测试/开发,但我再次提到这一点,将其作为 Java 部署错误的常见来源。

其次,Jelastic 不提供邮件传输应用程序(Java Mail 使用该应用程序进行投递)。因此,Jelastic 主机上提供的任何 MTA 都是由底层操作系统提供的。当然,大多数服务器都会有这样的规定,但它可能会根据主机的不同而有所不同。

这对我来说很有意义,因为邮件传输是一项单独的服务。如果 Jelastic 提供邮件传输,则期望将作为单独/可监控/可收费插件进行控制。但是缺少这样的插件意味着发送邮件的应用程序依赖于主机的底层配置(......但请往下看一点)。这种缺乏传输可能是合乎逻辑的,但是,它与共享服务器的普遍期望相反。

我的接下来的评论适用于 Layershift 的 Jelastic 实现,但我预计其他 Jelastic 主机配置大致相同。

  • 您有试用帐户和 IPv4 吗?
    除非您有付费帐户和静态 IP 地址,否则不会启用 Layershift 的 MTA。就这么简单。
  • Layershift 的 MTA 配置
    仅适用于端口 25,无 SSL。

如果 OP 使用 Layershift 或具有类似软件堆栈的 Jelastic 主机,这就是为什么只有端口 25 可以工作。这种缺乏规定就是为什么明显成功投递的邮件从未被转发到服务器(OP 不可能知道这一点)。

我发现只设置了25端口限制。某些 SMTP 服务器作为反垃圾邮件措施会开放其他端口。然而,我自己在 Layershift 的支持下经历了这个过程,看来他们的规定并不有限,只是粗略的。从此...

Layershift 明确表示不依赖底层传输(仅用于测试)。他们指出,电子邮件源将来自其上游公共(public) IP,该 IP 不适用于邮件,因此无法满足反垃圾邮件检查等要求。他们的立场是,交易电子邮件的发送可以通过新的外部服务之一更好地处理,例如,

Mailjet、Mandrill、Sendgrid

(抱歉,我无法发布这些链接)

请注意,其中一些服务对于低使用量是免费的。

同样,这作为服务提供很有意义,但与普遍期望相反。

最后,如果您有非常专业的需求,Jelastic 启用了一些代码来运行您自己的电子邮件服务器。这似乎违背了OP的需求——太多的麻烦和维护,但如果这是目的,

Jelastic - run your own mail server

希望有帮助。

关于Java Mail 代码部署到 Jelastic 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com