我在外部文件(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
}
答案 0 :(得分:1)
我遇到了同样的问题,无法弄清楚为什么Rails认为我没有给它密码。结果我在一个文件中定义config.action_mailer.smtp_settings
,然后在另一个文件中添加键值组合。问题是我使用的是merge
而不是merge!
,所以我的密码永远不会进入smtp_settings,而是变成临时哈希。
根据这段经历,我了解到你得到的错误信息是ActionMailer说“密码在哪里?”的方式。
所以我的猜测是你的问题与Environment variable in Rails console and Pow相反,其中环境变量在Rails服务器上工作但在Rails控制台中不工作。尝试执行:
$ echo "$SENDGRID_PASSWORD"
看看你得到了什么。我觉得Env变量没有设置,但它只是Rails控制台中的一个局部变量。
答案 1 :(得分:-1)
应该是:authentication => '纯'