代码之家  ›  专栏  ›  技术社区  ›  Rick Grimes

ssl_connect returned=1 errno=0 state=未知状态:未知协议

  •  0
  • Rick Grimes  · 技术社区  · 6 年前

    在阅读了许多文章之后,我找不到解决问题的办法。我已经与www. SMtP.NET进行了测试连接,这是成功的。我的error.log只告诉我错误:

    OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=unknown state: unknown protocol
    
    
    app/controllers/passwords_controller.rb:11:in `create'
    

    可能和我的nginx设置有关?

    问题

    我试图通过mailgun(或gmail)配置我的smtp,但没有成功。 我的配置 开发.rb 看起来像:

    config.action_mailer.default_url_options = { :host => "xxxxx:8765" } 
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.perform_deliveries = true
    config.action_mailer.smtp_settings = {
       :address => "smtp.gmail.com",
       :port => 587,
       :domain => "mail.google.com",
       :user_name => "xxx@gmail.com",
       :password => "xxxxxx",
       :authentication => :plain,
       :enable_starttls_auto => true
    }
    

    错误将被抛出到动作create的第11行:

      AccountMailer.password_reset_email(@account).deliver
    

    我已经在开发服务器上安装了openssl 1.0.1f

    痕迹

    /root/.rbenv/versions/2.5.1/lib/ruby/2.5.0/net/protocol.rb:44:in `connect_nonblock'
    /root/.rbenv/versions/2.5.1/lib/ruby/2.5.0/net/protocol.rb:44:in `ssl_socket_connect'
    /root/.rbenv/versions/2.5.1/lib/ruby/2.5.0/net/smtp.rb:584:in `tlsconnect'
    /root/.rbenv/versions/2.5.1/lib/ruby/2.5.0/net/smtp.rb:552:in `do_start'
    /root/.rbenv/versions/2.5.1/lib/ruby/2.5.0/net/smtp.rb:518:in `start'
    mail (2.7.0) lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
    mail (2.7.0) lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
    mail (2.7.0) lib/mail/message.rb:2160:in `do_delivery'
    mail (2.7.0) lib/mail/message.rb:260:in `block in deliver'
    actionmailer (4.2.8) lib/action_mailer/base.rb:543:in `block in deliver_mail'
    activesupport (4.2.8) lib/active_support/notifications.rb:164:in `block in instrument'
    activesupport (4.2.8) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    activesupport (4.2.8) lib/active_support/notifications.rb:164:in `instrument'
    actionmailer (4.2.8) lib/action_mailer/base.rb:541:in `deliver_mail'
    mail (2.7.0) lib/mail/message.rb:260:in `deliver'
    actionmailer (4.2.8) lib/action_mailer/message_delivery.rb:85:in `deliver_now'
    actionmailer (4.2.8) lib/action_mailer/message_delivery.rb:105:in `deliver'
    app/controllers/passwords_controller.rb:11:in `create'
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   lacostenycoder    6 年前

    如果您尝试此设置并删除您当前拥有的所有其他设置,会发生什么情况:

    # /config/environments/development.rb
    
    # Gmail configuration
    config.action_mailer.raise_delivery_errors = true
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      address:              'smtp.gmail.com',
      port:                 587,
      domain:               'example.com',
      user_name:            ENV['EMAIL_USER'],
      password:             ENV['EMAIL_PASS'],
      authentication:       'plain',
      enable_starttls_auto: true
    }
    

    我不确定您是否需要使用smtper.net,但也许可以看到,尽管它已经很旧了,但它可能仍然应该工作:

    http://blog.napcs.com/2013/07/21/rails_ssl_simple_wa/

    您需要设置这些环境变量,因为您显然不应该在git repo中提交凭据。

    但是也可以看到这些帖子,因为你可能需要为gmail做一些其他的事情。

    (Ruby) Getting Net::SMTP working with Gmail...?

    Rails 4, how to correctly configure smtp settings (gmail)