使用ENV [USERNAME]和ENV [PASSWORD]使用Gmail的Rails邮件程序Net :: SMTPAuthenticationError(需要530-5.5.1身份验证)

时间:2012-10-15 18:39:28

标签: ruby-on-rails ruby-on-rails-3.2

从生产环境发送邮件时收到错误,特别是:

Net::SMTPAuthenticationError (530-5.5.1 Authentication Required)

在我的本地计算机和开发环境中,我正在使用ENV[GMAIL_USERNAME]ENV[GMAIL_PASSWORD]声明密码,并且它正常工作,声明的ENV存储在我的.bash_profile中

  # Development Environment for Action Mailer config
  config.action_mailer.default_url_options = { host: '0.0.0.0:3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.default charset: 'utf-8'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    port: 587,
    domain: 'mydomain.com',
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: ENV["GMAIL_USERNAME"],
    password: ENV["GMAIL_PASSWORD"]
  }

  # Production Environment for Action Mailer config
  config.action_mailer.default_url_options = { host: 'mydomain.com' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.default charset: 'utf-8'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    domain: "mydomain.com",
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: ENV["GMAIL_USERNAME"],
    password: ENV["GMAIL_PASSWORD"]
  }

不幸的是,在制作中我发送邮件时收到错误。但是,如果我在environments/production.rb中对用户名和密码进行硬编码,则可行。 {。1}}和`ENV [“GMAIL_PASSWORD”]在.bash_profile中设置:

ENV["GMAIL_USERNAME"]

我认为应用程序无法调用export GMAIL_USERNAME="hello@mydomain.com" export GMAIL_PASSWORD="mypassword" ENV["GMAIL_USERNAME"]但是当我跳转到生产rails控制台并ENV["GMAIL_PASSWORD"]时,它会输出正确的凭据。

我已经重启Apache并多次重启我的应用程序,但我很困惑下一步该做什么。

非常感谢任何帮助。

先谢谢你。

1 个答案:

答案 0 :(得分:3)

谁的bash个人资料?你的用户? Apache不会在启动时读取这些配置文件,因为它不运行bash来启动服务器。当您登录服务器时,您的配置文件会被获取。这就是为什么它在你测试时有效。

您需要确保在脚本或运行apache的环境中定义环境变量。根据您的服务器,这可能位于/ etc / apache2 / envvars中,或者添加到apache的启动脚本中。