设置用于在rails中发送邮件的SMTP设置

时间:2013-12-01 20:53:53

标签: ruby-on-rails ruby-on-rails-4

我已按照following tutorial创建联系表单。

一切都很好,但正如教程所说For real e-mail delivery, you should set up SMTP in the environment settings.我该如何设置SMTP?

this链接中建议我创建并编辑了smtp_settings.rb;但是没有运气。它仍然不会将电子邮件发送给真实用户。

smtp_settings.rb

if Rails.env.production?
  Gitlab::Application.config.action_mailer.delivery_method = :smtp

  ActionMailer::Base.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    user_name: "myaccount@gmail.com",
    password: "abcpassword",
    domain: "mail.google.com",
    authentication: :login,
    enable_starttls_auto: true
  }
end

1 个答案:

答案 0 :(得分:1)

可能是因为Rails没有找到您的smtp_settings.rb文件,或者delivery_method行没有被识别..

如果文件已经存在,请尝试将文件移至/config/initializers/smtp_settings.rb,然后将内容稍微更改为

if Rails.env.production?
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.smtp_settings = {
    address:              "smtp.gmail.com",
    port:                 587,
    user_name:            "myaccount@gmail.com",
    password:             "abcpassword",
    domain:               "mail.google.com",
    authentication:       :login,
    enable_starttls_auto: true
  }
end

也可能是这些设置仅适用于制作,如果您在开发中本地尝试此操作,则需要删除第一行{{1} }和最后一行if Rails...一样..

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  address:              "smtp.gmail.com",
  port:                 587,
  user_name:            "myaccount@gmail.com",
  password:             "abcpassword",
  domain:               "mail.google.com",
  authentication:       :login,
  enable_starttls_auto: true
}

对此文件进行任何更改后,您需要重新启动rails服务器或rails控制台会话才能使更改生效。