使用actionmailer rails 4时执行过期异常

时间:2016-07-07 14:08:54

标签: ruby-on-rails ruby smtp actionmailer

我以两种方式使用了actionmailer。第一个使用配置的gmail smtp: -

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  ActionMailer::Base.delivery_method = :smtp # be sure to choose SMTP delivery
  ActionMailer::Base.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => "587",
    :domain               => "gmail.com",
    :user_name            => "some-username@gmail.com",
    :password             => "some-password",
    :authentication       => "plain",
    :enable_starttls_auto => true
  }

这很好用。邮件已发送。

问题是当我决定在我的服务器中使用配置时使用我的邮件服务器: -

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  ActionMailer::Base.delivery_method = :smtp # be sure to choose SMTP delivery
  ActionMailer::Base.smtp_settings = {
    :address              => "mail.xgram.xyz",
    :port                 => "25",
    :domain               => "xgram.xyz",
    :user_name            => "some-username@xgram.xyz",
    :password             => "some-password",
    :authentication       => "plain",
    :enable_starttls_auto => true
  }

使用此配置,我在终端

中收到此错误
  

Net :: OpenTimeout(执行已过期):

和浏览器中的此错误

  

执行已过期

此外,mail.xgram.xyz作为服务器名称有效,因为当我将其更改为任意名称时,错误将是

  

getaddrinfo:名称或服务未知

任何人都可以帮助我吗? 提前谢谢

1 个答案:

答案 0 :(得分:0)

您需要在服务器配置中禁用ipv6。一旦完成,您将看不到错误。