【问题标题】:Java SMTP Authentication only when required仅在需要时进行 Java SMTP 身份验证
【发布时间】:2011-08-01 18:17:40
【问题描述】:

我们如何使用 java 邮件 API 以便仅在需要时进行 SMTP 身份验证。 例如,如果 mail.smtp.auth 属性设置为 true,则即使 SMTP 服务器不需要身份验证,也会进行身份验证。

是否需要先发送不带密码的邮件,捕获异常并根据异常发送带密码的邮件?

【问题讨论】:

  • 您为什么要这样做?当然,如果您有进行身份验证的方法,您应该这样做。同上使用安全通道与服务器交谈。此外,我从未听说有人使用 optional 身份验证配置 SMTP 服务器。你为什么要这样做?
  • Internal-Internal 域电子邮件未在我正在使用的系统中进行身份验证。因此要求。可能很奇怪但是有没有这样做。
  • “不是”是指“无法验证”还是“不需要验证”?在后一种情况下,最佳做法是无论如何都要对它们进行身份验证。
  • 是的,认证是最好的方式。毫无疑问。就我而言,我无法控制已配置的邮件服务器设置。例如,邮件服务器可以具有本地-本地域 - 无身份验证和本地-外部域具有身份验证。我有一个像这样的真实场景。我说的是那个具体的案例。最好的方法是什么。
  • 你没有回答我的问题。

标签: java smtp


【解决方案1】:

如果 mail.smtp.auth 属性设置为 true,则验证甚至完成 当 SMTP 服务器不需要时。

很难相信不需要身份验证的 SMTP 服务器的存在或实用性。

【讨论】:

  • 感谢您的回复。但是我们有什么办法可以做到这一点?
  • @Ramana 在您提供存在证明之前,这不是一个有趣的问题,是吗?
【解决方案2】:

基于此:

我没有控制权暗示这取决于使用该软件的用户。

简单的解决方案是允许用户打开/关闭使用配置的身份验证详细信息。其中有很多,包括启用/禁用身份验证的一些。

除此之外,你运气不好。您将需要通过创建子类或从头开始来实现自己的 SMTP 提供程序行为。或者,捕获异常并重试。

根本不支持您的特定操作模式。


对于它的价值,我认为 javamail 实现者在不支持这个用例方面做了正确的事情,无论他们是否故意这样做。它会鼓励邮件服务器实现者对安全性马虎,并鼓励最终用户玩电子邮件欺骗的愚蠢游戏。

【讨论】:

  • 感谢您的解释。它有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 2016-09-16
  • 1970-01-01
相关资源
最近更新 更多