0

我有一个 SMTP 服务器需要使用扩展 smtp (esmtp) 进行身份验证,但我找不到让我的 rails 应用程序使用 EHLO 而不是 HELO 进行身份验证的方法。

有任何想法吗 ?

4

1 回答 1

1

你确定 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
于 2012-11-13T18:01:45.760 回答