0

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

当在本地使用时,该设置在准确配置时,通过测试传递电子邮件没有问题。它可以传送到各种端口和两个非常不同的 SMTP 服务器。但是当部署到 Jelastic 时,该应用程序无法传递邮件。

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

问题似乎很窄——只有端口 25 正在处理邮件传递,Java Mail 认为它已经成功。但是邮件可能没有到达的原因有很多,我不确定从哪里开始,或者在某些情况下,例如捕获出站邮件,如何调试。

这个问题可能与,

Grails 邮件传递在本地运行良好

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

4

2 回答 2

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、山魈、Sendgrid

(对不起,我不能发布这些链接)

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

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

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

Jelastic - 运行您自己的邮件服务器

希望有帮助。

于 2013-12-11T08:52:21.453 回答
0

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

于 2013-12-09T16:27:04.373 回答