我有一个 SMTP 服务器需要使用扩展 smtp (esmtp) 进行身份验证,但我找不到让我的 rails 应用程序使用 EHLO 而不是 HELO 进行身份验证的方法。
有任何想法吗 ?
我有一个 SMTP 服务器需要使用扩展 smtp (esmtp) 进行身份验证,但我找不到让我的 rails 应用程序使用 EHLO 而不是 HELO 进行身份验证的方法。
有任何想法吗 ?
你确定 Rails 还没有这样做吗?挖掘源代码,Rails 委托给 Mail gem,该 gem 委托给Net::SMTP
. 如果您查看 lib/net/smtp.rb 的 Ruby 源代码,您会发现它有时会调用一个私有do_helo
方法来检查@esmtp
变量,如果为真,则执行 ehlo 而不是 helo。回顾初始化,@esmtp
默认情况下它设置为 true。我没有看到它在任何地方变得不稳定。
也许是别的东西?
do_helo
供参考Net::SMTP
def do_helo(helodomain)
begin
if @esmtp
ehlo helodomain
else
helo helodomain
end
rescue Net::ProtocolError
if @esmtp
@esmtp = false
@error_occured = false
retry
end
raise
end
end