Rails 4 个动作邮件程序环境变量

Rails 4 action mailer environment variables

我正在 Rails 4 应用程序中使用 actionmailer 创建简单的表单到电子邮件表单。

当我在 development.rb 文件中使用以下设置时,一切正常:

  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      address: "mail.hover.com",
      port: 587,
      domain: "blah.com",
      user_name: "dennis@blah.com",
      password: "thisBeMyPassword",
      authentication: 'plain',
      enable_starttls_auto: true,
      openssl_verify_mode: 'none'
  }

但是当我尝试在我的代码中使用 ENV 变量时,我收到身份验证失败错误:

  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      address: "mail.hover.com",
      port: 587,
      domain: "blah.com",
      user_name: "dennis@blah.com",
      password: ENV["MY_EMAIL_PASSWORD"],
      authentication: 'plain',
      enable_starttls_auto: true,
      openssl_verify_mode: 'none'
  }

当我在控制台中使用 printenv 以及在代码中粘贴 puts ENV["MY_EMAIL_PASSWORD"] 时,我可以在终端中看到这个变量。

我已经对拼写、大小写等进行了三重检查

我看不出问题,但我可以推荐 figaro gem。它使处理环境变量变得非常容易。试试看,让我知道。