【问题标题】:Java Mail code fails on deployment to JelasticJava Mail 代码在部署到 Jelastic 时失败
【发布时间】:2013-12-09 14:19:24
【问题描述】:

我有一个运行动态 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


【解决方案1】:

这个问题的子结构可能比 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 明确表示不依赖底层传输(仅用于测试)。他们指出,电子邮件来源将来自他们的上游公共 IP,该 IP 不适用于邮件,因此不能满足例如反垃圾邮件检查。他们的立场是,交易电子邮件的发送最好由一种新的外部服务来处理,例如,

Mailjet、Mandrill、Sendgrid

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

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

同样,这在提供服务方面非常有意义,但与普遍预期相反。

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

Jelastic - run your own mail server

希望对您有所帮助。

【讨论】:

【解决方案2】:

您是否尝试通过使用除 localhost:25 之外的任何其他外部 SMTP 服务器来解决该问题?比如gmail SMTP?

【讨论】:

  • 我应该更清楚地解释我对服务器的引用 - 它们是外部服务器,其中之一是非常可用的 Gmail。如今,Gmail 可以配置额外的安全措施,因此对于任何阅读的人来说,它可能不再是开放式故障排除的最佳选择 - 如果您有,请尝试使用 ISP 服务器。
猜你喜欢
  • 2015-02-28
  • 2016-07-10
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多