我在一个外部文件(config/application.yml)中设置了我的Sendgrid密码,该文件是我用Figaro gem设置的。这在我的本地机器上工作得很好,但在我的服务器上,我得到了一个错误,没有设置密码:
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
}
发布于 2012-10-29 12:50:45
我也有同样的问题,我不明白为什么Rails认为我没有给它一个密码。原来我是在一个文件中定义config.action_mailer.smtp_settings
,然后在另一个文件中添加键值组合。问题是我使用的是merge
而不是merge!
,所以我的密码从来没有进入过smtp_settings,而是进入了一个临时哈希。
从这次经历中,我了解到你收到的错误消息是ActionMailer询问“密码在哪里?”
因此,我猜测您的问题与Environment variable in Rails console and Pow相反,即环境变量在Rails服务器上工作,但不在Rails控制台上工作。尝试执行以下命令:
$ echo "$SENDGRID_PASSWORD"
看看你能得到什么。我感觉环境变量并没有被设置,而是Rails控制台中的一个局部变量。
发布于 2016-06-22 12:02:58
它应该是:身份验证=>‘普通’
https://stackoverflow.com/questions/13080445
复制相似问题