【问题标题】:Java Mail SMTP authentication requirement check without sending a mailJava Mail SMTP 身份验证要求检查而不发送邮件
【发布时间】:2021-10-02 20:42:11
【问题描述】:
我想知道我们如何在不发送电子邮件的情况下检查 SMTP 服务器是否需要身份验证。我在 Transport.send(mimemessage) 上收到 SMTPSendFailedException
其中进一步说“必须先发出 STARTTLS 命令”,但我不想使用任何身份验证方法。
有什么方法可以在不发送电子邮件的情况下检查是否需要身份验证。
任何帮助将不胜感激。
【问题讨论】:
标签:
java
smtp
jakarta-mail
smtp-auth
【解决方案1】:
“必须先发出 STARTTLS 命令”
这不是身份验证请求。 STARTTLS 命令是用于与服务器协商安全连接的协议的开始。如果服务器要求您协商一个安全连接以与它通信(在您选择的端口上),那么您必须这样做。
这必须在服务器请求任何请求之前发生...
有什么方法可以在不发送电子邮件的情况下检查是否需要身份验证。
根据 SMTP 规范,可以请求某些命令(VRFY、EXPN)而无需进行身份验证,但是:
- 规范规定客户端应该以 EHLO 开头,告诉服务器它是谁。
- 服务器有权拒绝 VRFY 或 EXPN 请求,无论客户端是否已通过 EHLO 标识自己或对其自身进行身份验证(以某种方式)。
我认为没有一种可靠的方法来测试服务器是否需要客户端/用户进行身份验证......在这个词的正确意义上......而不尝试发送电子邮件。