Rails:当我将凭据设置为环境变量时,无法使邮件工作

时间:2016-07-28 13:01:48

标签: ruby-on-rails environment-variables actionmailer

我在Rails 4应用中设置了一个联系表单,该表单将使用Gmail发送电子邮件。首先,我让它在config / environments / development.rb中使用这些设置:

config.action_mailer.delivery_method = :smtp
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            'myusername@gmail.com',
  password:             'MyPassword',
  authentication:       'plain',
  enable_starttls_auto: true
}

然后我使用this方法在config / environment_variables.yml中设置环境变量并使用config / initializers / environment_varibles.rb加载它,并将config / environments / development.rb中的SMTP设置更改为:< / p>

config.action_mailer.delivery_method = :smtp
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            ENV["GMAIL_USERNAME"],
  password:             ENV["GMAIL_PASSWORD"],
  authentication:       'plain',
  enable_starttls_auto: true
}

我的config / environment_variables.yml文件如下所示:

development:
  GMAIL_USERNAME: myusername@gmail.com
  GMAIL_PASSWORD: MyPassword
production:
  GMAIL_USERNAME: myusername@gmail.com
  GMAIL_PASSWORD: MyPassword

现在,邮件程序向我提供错误“Net :: SMTPAuthenticationError”。我发现非常奇怪的是,当我启动服务器时,环境变量似乎可以正常加载。我在rails控制台中检查了这个:

2.3.0 :001 > ENV["GMAIL_USERNAME"]
 => "myusername@gmail.com" 
2.3.0 :002 > ENV["GMAIL_PASSWORD"]
 => "MyPassword" 

我在工作硬编码原始解决方案和非工作环境变量solurion之间来回切换。我已经多次检查过凭证的拼写。我已经找了两天的解决方案了,我觉得我错过了一些简单的事情。

有没有人知道问题可能是什么? : - )

0 个答案:

没有答案