6

我在使用 Figaro gem 设置的外部文件 (config/application.yml) 中设置了 Sendgrid 密码。这在我的本地机器上工作正常,但在我的服务器上我收到一个错误,没有设置密码:

ArgumentError (SMTP-AUTH requested but missing secret phrase)

当我将 Sendgrid 配置更改为纯文本密码时,它工作正常,所以我假设 Rails 无法识别环境变量。奇怪的是,当我进入rails console production并执行它时,puts ENV["SENDGRID_PASSWORD"]它工作正常。

有任何想法吗?

这是我的 Sendgrid 配置:

config.action_mailer.smtp_settings = {
  :address              => "smtp.sendgrid.net",
  :port                 => 587,
  :user_name            => "chrislawrence",
  :password             => ENV['SENDGRID_PASSWORD'],
  :domain               => "lakecinema.net.au",
  :authentication       => :plain,
  :enable_starttls_auto => true
}
4

2 回答 2

1

我遇到了同样的问题,不明白为什么 Rails 认为我没有给它一个密码。原来我是config.action_mailer.smtp_settings在一个文件中定义的,然后在另一个文件中添加键值组合。问题是我使用merge的不是,merge!所以我的密码从来没有进入 smtp_settings 而是进入一个临时哈希。

从这次经历中,我了解到您收到的错误消息是 ActionMailer 说“密码在哪里?”的方式。

所以我的猜测是你的问题是Rails 控制台和 Pow中的环境变量的逆,其中环境变量在 Rails 服务器上工作,但不在 Rails 控制台中。尝试执行:

$ echo "$SENDGRID_PASSWORD"

看看你得到了什么。我感觉未设置 Env 变量,但它只是 Rails 控制台中的局部变量。

于 2012-10-29T04:50:44.573 回答
-1

它应该是 :authentication => 'plain'

于 2016-06-22T04:02:58.033 回答